diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-07-18 17:52:46 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-07-18 17:52:46 +0200 |
commit | 66fae1d81013a2321e7d607a426f834a01b847ce (patch) | |
tree | 8d32a121bee3f2952047e719c18bcd015f1257e4 /netwerk/protocol/http/Http2Session.cpp | |
parent | 2539ce925195a9524521c5d87fd3441d964d03d3 (diff) | |
download | UXP-66fae1d81013a2321e7d607a426f834a01b847ce.tar UXP-66fae1d81013a2321e7d607a426f834a01b847ce.tar.gz UXP-66fae1d81013a2321e7d607a426f834a01b847ce.tar.lz UXP-66fae1d81013a2321e7d607a426f834a01b847ce.tar.xz UXP-66fae1d81013a2321e7d607a426f834a01b847ce.zip |
Implement a threadsafe & revised version of http2PushedStream.
Diffstat (limited to 'netwerk/protocol/http/Http2Session.cpp')
-rw-r--r-- | netwerk/protocol/http/Http2Session.cpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/netwerk/protocol/http/Http2Session.cpp b/netwerk/protocol/http/Http2Session.cpp index 4a178f091..86e8c74f6 100644 --- a/netwerk/protocol/http/Http2Session.cpp +++ b/netwerk/protocol/http/Http2Session.cpp @@ -380,12 +380,24 @@ Http2Session::AddStream(nsAHttpTransaction *aHttpTransaction, if (mClosed || mShouldGoAway) { nsHttpTransaction *trans = aHttpTransaction->QueryHttpTransaction(); - if (trans && !trans->GetPushedStream()) { - LOG3(("Http2Session::AddStream %p atrans=%p trans=%p session unusable - resched.\n", - this, aHttpTransaction, trans)); - aHttpTransaction->SetConnection(nullptr); - gHttpHandler->InitiateTransaction(trans, trans->Priority()); - return true; + if (trans) { + RefPtr<Http2PushedStreamWrapper> pushedStreamWrapper; + pushedStreamWrapper = trans->GetPushedStream(); + if (!pushedStreamWrapper || !pushedStreamWrapper->GetStream()) { + LOG3( + ("Http2Session::AddStream %p atrans=%p trans=%p session unusable - " + "resched.\n", this, aHttpTransaction, trans)); + aHttpTransaction->SetConnection(nullptr); + nsresult rv = + gHttpHandler->InitiateTransaction(trans, trans->Priority()); + if (NS_FAILED(rv)) { + LOG3( + ("Http2Session::AddStream %p atrans=%p trans=%p failed to " + "initiate transaction (%08x).\n", + this, aHttpTransaction, trans, static_cast<uint32_t>(rv))); + } + return true; + } } } |