зеркало из https://github.com/mozilla/gecko-dev.git
Bug 813869 - missing DoNotifyListener, invalid late error return in nsHttpChannel::AsyncOpen. r=mcmanus
This commit is contained in:
Родитель
57049dc308
Коммит
2756b7d1d0
|
@ -4316,16 +4316,22 @@ nsHttpChannel::AsyncOpen(nsIStreamListener *listener, nsISupports *context)
|
|||
// timing.
|
||||
mAsyncOpenTime = TimeStamp::Now();
|
||||
|
||||
// the only time we would already know the proxy information at this
|
||||
// point would be if we were proxying a non-http protocol like ftp
|
||||
// the only time we already know the proxy information at this
|
||||
// point is if we are proxying a non-http protocol like ftp
|
||||
if (!mProxyInfo && NS_SUCCEEDED(ResolveProxy()))
|
||||
return NS_OK;
|
||||
|
||||
// If we get here, we're either proxying a non-http protocol, or
|
||||
// async proxy resolution failed (try to proceed synchronously)
|
||||
rv = BeginConnect();
|
||||
if (NS_FAILED(rv))
|
||||
ReleaseListeners();
|
||||
if (NS_FAILED(rv)) {
|
||||
LOG(("Calling AsyncAbort [rv=%x mCanceled=%i]\n", rv, mCanceled));
|
||||
AsyncAbort(rv);
|
||||
}
|
||||
|
||||
return rv;
|
||||
// We must always return NS_OK after we've added channel to loadGroup
|
||||
// and/or notified observers.
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -4435,15 +4441,15 @@ nsHttpChannel::BeginConnect()
|
|||
else
|
||||
rv = Connect();
|
||||
if (NS_FAILED(rv)) {
|
||||
LOG(("Calling AsyncAbort [rv=%x mCanceled=%i]\n", rv, mCanceled));
|
||||
CloseCacheEntry(true);
|
||||
AsyncAbort(rv);
|
||||
return rv;
|
||||
} else if (mLoadFlags & LOAD_CLASSIFY_URI) {
|
||||
nsRefPtr<nsChannelClassifier> classifier = new nsChannelClassifier();
|
||||
rv = classifier->Start(this);
|
||||
if (NS_FAILED(rv)) {
|
||||
// returning an error would cause DoNotifyListener: we want Cancel()
|
||||
Cancel(rv);
|
||||
return rv;
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4515,7 +4521,6 @@ nsHttpChannel::OnProxyAvailable(nsICancelable *request, nsIURI *uri,
|
|||
}
|
||||
|
||||
if (NS_FAILED(rv)) {
|
||||
Cancel(rv);
|
||||
DoNotifyListener();
|
||||
}
|
||||
return NS_OK;
|
||||
|
|
Загрузка…
Ссылка в новой задаче