This is an automated email from the ASF dual-hosted git repository.

cmcfarlen pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit 407aeb29f076454166c0f92046d419f1847978f6
Author: Masaori Koshiba <masa...@apache.org>
AuthorDate: Tue Jul 22 07:13:09 2025 +0900

    Disable read/write_vio in Http2Stream::transaction_done (#12367)
    
    (cherry picked from commit 9a8f86880864b15ebfe1cb5a8ce36bd5a8ab3482)
---
 src/proxy/http2/Http2Stream.cc | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/proxy/http2/Http2Stream.cc b/src/proxy/http2/Http2Stream.cc
index 7096777ab4..eb8c977f01 100644
--- a/src/proxy/http2/Http2Stream.cc
+++ b/src/proxy/http2/Http2Stream.cc
@@ -600,7 +600,11 @@ Http2Stream::transaction_done()
   }
   Http2ConnectionState &state = this->get_connection_state();
   ink_release_assert(closed || !state.is_state_closed());
+
+  // HttpSM is gone, no more reading or writing
   _sm = nullptr;
+  read_vio.disable();
+  write_vio.disable();
 
   if (closed) {
     // Safe to initiate SSN_CLOSE if this is the last stream
@@ -902,8 +906,8 @@ Http2Stream::update_write_request(bool call_update)
 void
 Http2Stream::signal_read_event(int event)
 {
-  if (this->read_vio.cont == nullptr || this->read_vio.cont->mutex == nullptr 
|| this->read_vio.op == VIO::NONE ||
-      this->terminate_stream) {
+  if (this->_sm == nullptr || this->read_vio.cont == nullptr || 
this->read_vio.cont->mutex == nullptr ||
+      this->read_vio.op == VIO::NONE || this->terminate_stream) {
     return;
   }
 
@@ -931,8 +935,8 @@ void
 Http2Stream::signal_write_event(int event, bool call_update)
 {
   // Don't signal a write event if in fact nothing was written
-  if (this->write_vio.cont == nullptr || this->write_vio.cont->mutex == 
nullptr || this->write_vio.op == VIO::NONE ||
-      this->terminate_stream) {
+  if (this->_sm == nullptr || this->write_vio.cont == nullptr || 
this->write_vio.cont->mutex == nullptr ||
+      this->write_vio.op == VIO::NONE || this->terminate_stream) {
     return;
   }
 

Reply via email to