You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2022/10/07 00:21:31 UTC

[trafficserver] branch 10-Dev updated: Fix a bug in H3 event handling (#9125)

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

maskit pushed a commit to branch 10-Dev
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/10-Dev by this push:
     new 2a0e8c685 Fix a bug in H3 event handling (#9125)
2a0e8c685 is described below

commit 2a0e8c685abacd3c4ebd1fb1451208d45496455a
Author: Masakazu Kitajo <ma...@apache.org>
AuthorDate: Fri Oct 7 09:21:24 2022 +0900

    Fix a bug in H3 event handling (#9125)
    
    If there is no READ_READY event on a stream and READ_COMPLETE event is the
    first read event, current code can go into a infinite event loop because header
    handler never get a chance to read incoming data.
---
 proxy/http3/Http3Transaction.cc | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/proxy/http3/Http3Transaction.cc b/proxy/http3/Http3Transaction.cc
index 6b4bc2db8..823cd3c31 100644
--- a/proxy/http3/Http3Transaction.cc
+++ b/proxy/http3/Http3Transaction.cc
@@ -356,13 +356,13 @@ Http3Transaction::state_stream_open(int event, void *edata)
     this->_info.read_vio->reenable();
     break;
   case VC_EVENT_READ_COMPLETE:
+    Http3TransVDebug("%s (%d)", get_vc_event_name(event), event);
+    this->_process_read_vio();
     if (!this->_header_handler->is_complete()) {
       // Delay processing READ_COMPLETE
       this_ethread()->schedule_imm(this, VC_EVENT_READ_COMPLETE);
       break;
     }
-    Http3TransVDebug("%s (%d)", get_vc_event_name(event), event);
-    this->_process_read_vio();
     this->_data_handler->finalize();
     // always signal regardless of progress
     this->_signal_read_event();