diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-07-21 23:05:59 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-07-22 04:53:44 +0200 |
commit | 17a4b4f6db96b04a62e54146d637b0e10a80acfa (patch) | |
tree | c84a4636793daa5098564e287c78f0cfd8de746b /netwerk/protocol/http/Http2Session.cpp | |
parent | f6a282023ec220c7cf181276e88a36be2821b132 (diff) | |
download | UXP-17a4b4f6db96b04a62e54146d637b0e10a80acfa.tar UXP-17a4b4f6db96b04a62e54146d637b0e10a80acfa.tar.gz UXP-17a4b4f6db96b04a62e54146d637b0e10a80acfa.tar.lz UXP-17a4b4f6db96b04a62e54146d637b0e10a80acfa.tar.xz UXP-17a4b4f6db96b04a62e54146d637b0e10a80acfa.zip |
Implement a threadsafe & revised version of http2PushedStream.
This re-applies the patch for this with added typename declaration.
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; + } } } |