summaryrefslogtreecommitdiffstats
path: root/netwerk/protocol/http/Http2Stream.cpp
diff options
context:
space:
mode:
authorNicholas Hurley <hurley@mozilla.com>2018-02-02 11:03:08 -0800
committerwolfbeast <mcwerewolf@gmail.com>2018-03-14 10:59:09 +0100
commit756fb3e1455cd903f952ded1c45f86e3527875ed (patch)
tree809988a6da3f108ee55472b4fb8597d13c560f30 /netwerk/protocol/http/Http2Stream.cpp
parente749d23a34ff04c492bcf729e01ed1a0292408f1 (diff)
downloadUXP-756fb3e1455cd903f952ded1c45f86e3527875ed.tar
UXP-756fb3e1455cd903f952ded1c45f86e3527875ed.tar.gz
UXP-756fb3e1455cd903f952ded1c45f86e3527875ed.tar.lz
UXP-756fb3e1455cd903f952ded1c45f86e3527875ed.tar.xz
UXP-756fb3e1455cd903f952ded1c45f86e3527875ed.zip
Bug 1416529. r=mcmanus, a=ritu
MozReview-Commit-ID: CD1l5vLB4yy --HG-- extra : rebase_source : d74f8ca96dab4e0d25d79948fcddbf8dab98bb36
Diffstat (limited to 'netwerk/protocol/http/Http2Stream.cpp')
-rw-r--r--netwerk/protocol/http/Http2Stream.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/netwerk/protocol/http/Http2Stream.cpp b/netwerk/protocol/http/Http2Stream.cpp
index f49c1f138..7a8f96855 100644
--- a/netwerk/protocol/http/Http2Stream.cpp
+++ b/netwerk/protocol/http/Http2Stream.cpp
@@ -103,10 +103,20 @@ Http2Stream::Http2Stream(nsAHttpTransaction *httpTransaction,
Http2Stream::~Http2Stream()
{
+ ClearPushSource();
ClearTransactionsBlockedOnTunnel();
mStreamID = Http2Session::kDeadStreamID;
}
+void
+Http2Stream::ClearPushSource()
+{
+ if (mPushSource) {
+ mPushSource->SetConsumerStream(nullptr);
+ mPushSource = nullptr;
+ }
+}
+
// ReadSegments() is used to write data down the socket. Generally, HTTP
// request data is pulled from the approriate transaction and
// converted to HTTP/2 data. Sometimes control data like a window-update is
@@ -1083,6 +1093,10 @@ Http2Stream::ConvertPushHeaders(Http2Decompressor *decompressor,
void
Http2Stream::Close(nsresult reason)
{
+ // In case we are connected to a push, make sure the push knows we are closed,
+ // so it doesn't try to give us any more DATA that comes on it after our close.
+ ClearPushSource();
+
mTransaction->Close(reason);
}