MINOR: mux-quic: interrupt qcc_recv*() operations if CC scheduled
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 9 Mar 2023 14:49:48 +0000 (15:49 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 23 Mar 2023 13:39:47 +0000 (14:39 +0100)
commitb47310d883700eee4ba996a7f035b05a069723cd
tree2f8aad22e0e1144f17e4c5e22819ab0e3831b789
parent665817a91c18b364e1d3b21426d6aea566852838
MINOR: mux-quic: interrupt qcc_recv*() operations if CC scheduled

Ensure that external MUX operations are interrupted if a
CONNECTION_CLOSE is scheduled. This was already the cases for some
functions. This is extended to the qcc_recv*() family for
MAX_STREAM_DATA, RESET_STREAM and STOP_SENDING.

Also, qcc_release_remote_stream() is skipped in qcs_destroy() if a
CONNECTION_CLOSE is already scheduled.

All of this will ensure we only proceed to minimal treatment as soon as
a CONNECTION_CLOSE is prepared. Indeed, all sending and receiving is
stopped as soon as a CONNECTION_CLOSE is emitted so only internal
cleanup code should be necessary at this stage.

This should prevent a registered CONNECTION_CLOSE error status to be
overwritten by an error in a follow-up treatment.

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