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 9107731358)
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit 1ac095486711084895763fe026bd9186f3415bd6)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
This commit is contained in:
Amaury Denoyelle 2022-12-22 18:56:09 +01:00 committed by Christopher Faulet
parent a6ff9f5361
commit ba2817bba8

View File

@ -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);