diff --git a/mozilla/netwerk/base/src/nsStreamListenerProxy.cpp b/mozilla/netwerk/base/src/nsStreamListenerProxy.cpp index e5b47efaa52..40dffd17d80 100644 --- a/mozilla/netwerk/base/src/nsStreamListenerProxy.cpp +++ b/mozilla/netwerk/base/src/nsStreamListenerProxy.cpp @@ -176,6 +176,12 @@ nsOnDataAvailableEvent::HandleEvent() rv = NS_ERROR_NOT_IMPLEMENTED; } + // Cancel the request on unexpected errors + if (NS_FAILED(rv) && (rv != NS_BASE_STREAM_CLOSED)) { + LOG(("OnDataAvailable failed [rv=%x] canceling request!\n")); + mRequest->Cancel(rv); + } + // // Update the listener status // diff --git a/mozilla/netwerk/base/src/nsStreamObserverProxy.cpp b/mozilla/netwerk/base/src/nsStreamObserverProxy.cpp index 681984774af..c7017a8a2c8 100644 --- a/mozilla/netwerk/base/src/nsStreamObserverProxy.cpp +++ b/mozilla/netwerk/base/src/nsStreamObserverProxy.cpp @@ -122,7 +122,12 @@ nsOnStartRequestEvent::HandleEvent() return NS_ERROR_FAILURE; } - return observer->OnStartRequest(mRequest, mContext); + nsresult rv = observer->OnStartRequest(mRequest, mContext); + if (NS_FAILED(rv)) { + LOG(("OnStartRequest failed [rv=%x] canceling request!\n", rv)); + mRequest->Cancel(rv); + } + return rv; } //