Commit 2fe419f3 authored by Kershaw Chang's avatar Kershaw Chang Committed by Pier Angelo Vendrame
Browse files

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

parent 59869717
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -1635,7 +1635,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()) {
@@ -1660,7 +1661,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;
    }
@@ -1703,7 +1705,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;
@@ -1806,7 +1809,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