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();