]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MEDIUM: mux-quic: properly implement soft-stop
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 24 Jan 2023 17:20:28 +0000 (18:20 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 20 Feb 2023 10:20:18 +0000 (11:20 +0100)
commitb3aa07c78e5f5d39c4c47a4f666711cea806e5f2
treedc4b37e3c60a91972452d23052fa4bd8914ffb7e
parenteb7d320d2529fc2579b032f77d3a97611b2baaf2
MEDIUM: mux-quic: properly implement soft-stop

Properly implement support for haproxy soft-stop on QUIC MUX. This code
is similar to H2 MUX :

* on timeout refresh, if stop-stop in progress, schedule the timeout to
  expire with regards to the close-spread-end window.

* after input/output processing, if soft-stop in progress, shutdown the
  connection. This is randomly spread by close-spread-end window. In the
  case of H3 connection, a GOAWAY is emitted and the connection is kept
  until all data are sent for opened streams. If the client tries to use
  new streams, they are rejected in conformance with the GOAWAY
  specification.

This ensures that MUX is able to forward all content properly before
closing the connection. The lower quic-conn layer is then responsible
for retransmission and should be closed when all data are acknowledged.
This will be implemented in the next commit to fully support soft-stop
for QUIC connections.

This should be backported up to 2.7.
src/mux_quic.c