summaryrefslogtreecommitdiffstats
path: root/netwerk/protocol/http/Http2Session.cpp
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@wolfbeast.com>2019-07-18 17:52:46 +0200
committerwolfbeast <mcwerewolf@wolfbeast.com>2019-07-18 17:52:46 +0200
commit66fae1d81013a2321e7d607a426f834a01b847ce (patch)
tree8d32a121bee3f2952047e719c18bcd015f1257e4 /netwerk/protocol/http/Http2Session.cpp
parent2539ce925195a9524521c5d87fd3441d964d03d3 (diff)
downloadUXP-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.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;
+ }
}
}