Bug 1275917 - 1st transaction on dontresused h2 session r=hurley

This commit is contained in:
Patrick McManus 2016-07-05 12:33:34 -04:00
parent 9c70251dd9
commit 558727e2f9
3 changed files with 24 additions and 0 deletions

View File

@ -384,6 +384,17 @@ Http2Session::AddStream(nsAHttpTransaction *aHttpTransaction,
mConnection = aHttpTransaction->Connection();
}
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;
}
}
aHttpTransaction->SetConnection(this);
if (aUseTunnel) {

View File

@ -338,6 +338,17 @@ SpdySession31::AddStream(nsAHttpTransaction *aHttpTransaction,
mConnection = aHttpTransaction->Connection();
}
if (mClosed || mShouldGoAway) {
nsHttpTransaction *trans = aHttpTransaction->QueryHttpTransaction();
if (trans && !trans->GetPushedStream()) {
LOG3(("SpdySession31::AddStream %p atrans=%p trans=%p session unusable - resched.\n",
this, aHttpTransaction, trans));
aHttpTransaction->SetConnection(nullptr);
gHttpHandler->InitiateTransaction(trans, trans->Priority());
return true;
}
}
aHttpTransaction->SetConnection(this);
if (aUseTunnel) {

View File

@ -1861,6 +1861,8 @@ nsHttpConnectionMgr::ProcessNewTransaction(nsHttpTransaction *trans)
Http2PushedStream *pushedStream = trans->GetPushedStream();
if (pushedStream) {
LOG((" ProcessNewTransaction %p tied to h2 session push %p\n",
trans, pushedStream->Session()));
return pushedStream->Session()->
AddStream(trans, trans->Priority(), false, nullptr) ?
NS_OK : NS_ERROR_UNEXPECTED;