From a12e64da94e0d33fab15d343b798c0d33aba4ac3 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Wed, 14 Oct 2026 10:38:03 +0200 Subject: [PATCH] http2: do not update progress on END_STREAM without END_HEADERS As more continuation frames are expected. Next commit will update progress for those continuation frames. Ticket: 9217 Backport note: Gate the existing 8.0.x transaction-state transition on END_HEADERS for HEADERS frames, preserving DATA and half-closed handling instead of importing main's per-direction progress state machines. (cherry picked from commit ef7184012a25f3e38da64e377d63ddbaef40b527) --- rust/src/http2/http2.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rust/src/http2/http2.rs b/rust/src/http2/http2.rs index fbc8671e8b..4254e1f36e 100644 --- a/rust/src/http2/http2.rs +++ b/rust/src/http2/http2.rs @@ -432,7 +432,10 @@ impl HTTP2Transaction { //handle closing state changes match data { HTTP2FrameTypeData::HEADERS(_) | HTTP2FrameTypeData::DATA => { - if header.flags & parser::HTTP2_FLAG_HEADER_EOS != 0 { + if header.flags & parser::HTTP2_FLAG_HEADER_EOS != 0 + && (!matches!(data, HTTP2FrameTypeData::HEADERS(_)) + || header.flags & parser::HTTP2_FLAG_HEADER_END_HEADERS != 0) + { match self.state { HTTP2TransactionState::HTTP2StateHalfClosedClient | HTTP2TransactionState::HTTP2StateDataServer => {