summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--netwerk/protocol/http/Http2Session.cpp9
-rw-r--r--netwerk/protocol/http/nsHttpTransaction.cpp6
2 files changed, 8 insertions, 7 deletions
diff --git a/netwerk/protocol/http/Http2Session.cpp b/netwerk/protocol/http/Http2Session.cpp
index 726b39f74..3dc79c854 100644
--- a/netwerk/protocol/http/Http2Session.cpp
+++ b/netwerk/protocol/http/Http2Session.cpp
@@ -3532,17 +3532,18 @@ Http2Session::UnRegisterTunnel(Http2Stream *aTunnel)
}
void
-Http2Session::CreateTunnel(nsHttpTransaction *trans,
- nsHttpConnectionInfo *ci,
- nsIInterfaceRequestor *aCallbacks)
+Http2Session::CreateTunnel(nsHttpTransaction* trans,
+ nsHttpConnectionInfo* ci,
+ nsIInterfaceRequestor* aCallbacks)
{
LOG(("Http2Session::CreateTunnel %p %p make new tunnel\n", this, trans));
// The connect transaction will hold onto the underlying http
// transaction so that an auth created by the connect can be mappped
// to the correct security callbacks
+ RefPtr<nsHttpConnectionInfo> clone(ci->Clone());
RefPtr<SpdyConnectTransaction> connectTrans =
- new SpdyConnectTransaction(ci, aCallbacks, trans->Caps(), trans, this);
+ new SpdyConnectTransaction(clone, aCallbacks, trans->Caps(), trans, this);
AddStream(connectTrans, nsISupportsPriority::PRIORITY_NORMAL, false, nullptr);
Http2Stream *tunnel = mStreamTransactionHash.Get(connectTrans);
MOZ_ASSERT(tunnel);
diff --git a/netwerk/protocol/http/nsHttpTransaction.cpp b/netwerk/protocol/http/nsHttpTransaction.cpp
index 76e0a4ad9..e7f3ca0ef 100644
--- a/netwerk/protocol/http/nsHttpTransaction.cpp
+++ b/netwerk/protocol/http/nsHttpTransaction.cpp
@@ -2030,9 +2030,9 @@ nsHttpTransaction::DisableSpdy()
{
mCaps |= NS_HTTP_DISALLOW_SPDY;
if (mConnInfo) {
- // This is our clone of the connection info, not the persistent one that
- // is owned by the connection manager, so we're safe to change this here
- mConnInfo->SetNoSpdy(true);
+ RefPtr<nsHttpConnectionInfo> connInfo = mConnInfo->Clone();
+ connInfo->SetNoSpdy(true);
+ mConnInfo.swap(connInfo);
}
}