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 ef7184012a)
pull/16509/head
Philippe Antoine 2 weeks ago committed by Victor Julien
parent 5452cab6b7
commit a12e64da94

@ -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 => {

Loading…
Cancel
Save