Verified Commit 663d9707 authored by Kershaw Chang's avatar Kershaw Chang Committed by ma1
Browse files

Bug 1979955 - ensure transaction is alive (for ESR140), a=RyanVM

parent e710fcf4
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -1663,7 +1663,8 @@ nsresult nsHttpConnection::OnSocketWritable() {
          }

          LOG(("  writing transaction request stream\n"));
          rv = mTransaction->ReadSegmentsAgain(this,
          RefPtr<nsAHttpTransaction> transaction = mTransaction;
          rv = transaction->ReadSegmentsAgain(this,
                                              nsIOService::gDefaultSegmentSize,
                                              &transactionBytes, &again);
          if (mTlsHandshaker->EarlyDataUsed()) {
@@ -1688,7 +1689,8 @@ nsresult nsHttpConnection::OnSocketWritable() {
         static_cast<uint32_t>(mSocketOutCondition), again));

    // XXX some streams return NS_BASE_STREAM_CLOSED to indicate EOF.
    if (rv == NS_BASE_STREAM_CLOSED && !mTransaction->IsDone()) {
    if (rv == NS_BASE_STREAM_CLOSED &&
        (mTransaction && !mTransaction->IsDone())) {
      rv = NS_OK;
      transactionBytes = 0;
    }
@@ -1731,7 +1733,8 @@ nsresult nsHttpConnection::OnSocketWritable() {
      // When Spdy tunnel is used we need to explicitly set when a request is
      // done.
      if ((mState != HttpConnectionState::SETTING_UP_TUNNEL) && !mSpdySession) {
        nsHttpTransaction* trans = mTransaction->QueryHttpTransaction();
        nsHttpTransaction* trans =
            mTransaction ? mTransaction->QueryHttpTransaction() : nullptr;
        // needed for websocket over h2 (direct)
        if (!trans || !trans->IsWebsocketUpgrade()) {
          mRequestDone = true;
@@ -1835,7 +1838,8 @@ nsresult nsHttpConnection::OnSocketReadable() {
      rv = NS_ERROR_FAILURE;
      LOG(("  No Transaction In OnSocketWritable\n"));
    } else {
      rv = mTransaction->WriteSegmentsAgain(
      RefPtr<nsAHttpTransaction> transaction = mTransaction;
      rv = transaction->WriteSegmentsAgain(
          this, nsIOService::gDefaultSegmentSize, &n, &again);
    }
    LOG(("nsHttpConnection::OnSocketReadable %p trans->ws rv=%" PRIx32