summaryrefslogtreecommitdiffstats
path: root/netwerk/protocol/http/Http2Session.cpp
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-07-21 23:05:59 +0200
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-07-22 04:53:44 +0200
commit17a4b4f6db96b04a62e54146d637b0e10a80acfa (patch)
treec84a4636793daa5098564e287c78f0cfd8de746b /netwerk/protocol/http/Http2Session.cpp
parentf6a282023ec220c7cf181276e88a36be2821b132 (diff)
downloadUXP-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.cpp24
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;
+ }
}
}