From ba2817bba8520e3ee07f51eb72357894999a7cad Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Thu, 22 Dec 2022 18:56:09 +0100 Subject: [PATCH] BUG/MINOR: mux-quic: ignore remote unidirectional stream close Remove ABORT_NOW() on remote unidirectional stream closure. This is required to ensure our implementation is evolutive enough to not fail on unknown stream type. Note that for the moment MAX_STREAMS_UNI flow-control frame is never emitted. This should be unnecessary for HTTP/3 which have a limited usage of unidirectional streams but may be required if other application protocols are supported in the future. ABORT_NOW() was triggered by s2n-quic which opens an unknown unidirectional stream with greasing. This was detected by QUIC interop runner for http3 testcase. This must be backported up to 2.6. (cherry picked from commit 9107731358bec59a13cdaa723867823cd4a0c7af) Signed-off-by: Willy Tarreau (cherry picked from commit 1ac095486711084895763fe026bd9186f3415bd6) Signed-off-by: Christopher Faulet --- src/mux_quic.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/mux_quic.c b/src/mux_quic.c index 7ef1ee737..87a284559 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -1154,12 +1154,11 @@ static int qcc_release_remote_stream(struct qcc *qcc, uint64_t id) } } else { - /* TODO in HTTP/3 unidirectional streams cannot be closed or a - * H3_CLOSED_CRITICAL_STREAM will be triggered before - * entering here. If a new application protocol is supported it - * might be necessary to implement MAX_STREAMS_UNI emission. + /* TODO unidirectional stream flow control with MAX_STREAMS_UNI + * emission not implemented. It should be unnecessary for + * HTTP/3 but may be required if other application protocols + * are supported. */ - ABORT_NOW(); } TRACE_LEAVE(QMUX_EV_QCS_END, qcc->conn);