mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1167274 - Do the right thing when accessing the proxyinfo fails for some reason. r=mt
This commit is contained in:
parent
79767b7dac
commit
5736de1d3f
@ -162,46 +162,56 @@ OnProxyAvailable(nsICancelable *request,
|
||||
nsIChannel *aChannel,
|
||||
nsIProxyInfo *proxyinfo,
|
||||
nsresult result) {
|
||||
|
||||
if (result == NS_ERROR_ABORT) {
|
||||
// NS_ERROR_ABORT means that the PeerConnectionMedia is no longer waiting
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
CSFLogInfo(logTag, "%s: Proxy Available: %d", __FUNCTION__, (int)result);
|
||||
|
||||
if (NS_SUCCEEDED(result) && proxyinfo) {
|
||||
CSFLogInfo(logTag, "%s: Had proxyinfo", __FUNCTION__);
|
||||
nsresult rv;
|
||||
nsCString httpsProxyHost;
|
||||
int32_t httpsProxyPort;
|
||||
|
||||
rv = proxyinfo->GetHost(httpsProxyHost);
|
||||
if (NS_FAILED(rv)) {
|
||||
CSFLogError(logTag, "%s: Failed to get proxy server host", __FUNCTION__);
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = proxyinfo->GetPort(&httpsProxyPort);
|
||||
if (NS_FAILED(rv)) {
|
||||
CSFLogError(logTag, "%s: Failed to get proxy server port", __FUNCTION__);
|
||||
return rv;
|
||||
}
|
||||
|
||||
if (pcm_->mIceCtx.get()) {
|
||||
assert(httpsProxyPort >= 0 && httpsProxyPort < (1 << 16));
|
||||
pcm_->mProxyServer.reset(
|
||||
new NrIceProxyServer(httpsProxyHost.get(),
|
||||
static_cast<uint16_t>(httpsProxyPort)));
|
||||
} else {
|
||||
CSFLogError(logTag, "%s: Failed to set proxy server (ICE ctx unavailable)",
|
||||
__FUNCTION__);
|
||||
}
|
||||
SetProxyOnPcm(*proxyinfo);
|
||||
}
|
||||
|
||||
if (result != NS_ERROR_ABORT) {
|
||||
// NS_ERROR_ABORT means that the PeerConnectionMedia is no longer waiting
|
||||
pcm_->mProxyResolveCompleted = true;
|
||||
pcm_->FlushIceCtxOperationQueueIfReady();
|
||||
}
|
||||
pcm_->mProxyResolveCompleted = true;
|
||||
pcm_->FlushIceCtxOperationQueueIfReady();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
PeerConnectionMedia::ProtocolProxyQueryHandler::SetProxyOnPcm(
|
||||
nsIProxyInfo& proxyinfo)
|
||||
{
|
||||
CSFLogInfo(logTag, "%s: Had proxyinfo", __FUNCTION__);
|
||||
nsresult rv;
|
||||
nsCString httpsProxyHost;
|
||||
int32_t httpsProxyPort;
|
||||
|
||||
rv = proxyinfo.GetHost(httpsProxyHost);
|
||||
if (NS_FAILED(rv)) {
|
||||
CSFLogError(logTag, "%s: Failed to get proxy server host", __FUNCTION__);
|
||||
return;
|
||||
}
|
||||
|
||||
rv = proxyinfo.GetPort(&httpsProxyPort);
|
||||
if (NS_FAILED(rv)) {
|
||||
CSFLogError(logTag, "%s: Failed to get proxy server port", __FUNCTION__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (pcm_->mIceCtx.get()) {
|
||||
assert(httpsProxyPort >= 0 && httpsProxyPort < (1 << 16));
|
||||
pcm_->mProxyServer.reset(
|
||||
new NrIceProxyServer(httpsProxyHost.get(),
|
||||
static_cast<uint16_t>(httpsProxyPort)));
|
||||
} else {
|
||||
CSFLogError(logTag, "%s: Failed to set proxy server (ICE ctx unavailable)",
|
||||
__FUNCTION__);
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(PeerConnectionMedia::ProtocolProxyQueryHandler, nsIProtocolProxyCallback)
|
||||
#endif // !defined(MOZILLA_XPCOMRT_API)
|
||||
|
||||
|
@ -407,8 +407,9 @@ class PeerConnectionMedia : public sigslot::has_slots<> {
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
private:
|
||||
RefPtr<PeerConnectionMedia> pcm_;
|
||||
virtual ~ProtocolProxyQueryHandler() {}
|
||||
void SetProxyOnPcm(nsIProxyInfo& proxyinfo);
|
||||
RefPtr<PeerConnectionMedia> pcm_;
|
||||
virtual ~ProtocolProxyQueryHandler() {}
|
||||
};
|
||||
#endif // !defined(MOZILLA_XPCOMRT_API)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user