]> git.kaiwu.me - haproxy.git/commit
BUG/MEDIUM: mux_quic: complete stream shutdown for read channel
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 17 Jun 2026 16:04:56 +0000 (18:04 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 6 Jul 2026 08:19:12 +0000 (10:19 +0200)
commitbf76275fff4869fa2925ab4d627b677d45e528d6
tree83311e31bf7656c8f20ddd125b7ceb61c8b071f4
parentcc56803799763de618aad9b6880eac518270cc3a
BUG/MEDIUM: mux_quic: complete stream shutdown for read channel

Prior to this patch, shut stream callback only handles write channel
closure. In case of an early closure, a RESET_STREAM would be emitted.

On the frontend side in most cases this is sufficient as read channel is
already closed, as HTTP/3 GET requests has been fully received. However,
this may not be the case for POST requests. Also, on the backend side,
haproxy acts a client. In this case, a stream early closure will
typically happen before receiving the full response. Nothing will be
emitted (RESET_STREAM is unnecessary as write channel is already
closed), thus the server peer will continue to emit.

To fix this situation, the current patch implement read channel closure
on shut if SE_SHR_RESET is set. Callback lclose from app_ops is called
with a new dedicated mode for read channel closure, which will result in
a STOP_SENDING frame generated by H3 and hq transcoders. This will
instruct the peer to stop emission.

This should be backported up to 3.3. Note that this depends on the
following patch :
  dde3ee06c30f20091443bdafdda0e0294f7ac26b
  MINOR: mux_quic: use separate error code for STOP_SENDING
include/haproxy/mux_quic-t.h
src/h3.c
src/hq_interop.c
src/mux_quic.c