mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 07:37:02 +02:00
BUG/MINOR: mux-quic: disable fast-fwd if connection on error
Add a check on nego_ff to ensure connection is not on error. If this is the case, fast-forward is disable to prevent unnecessary sending. If snd_buf is latter called, stconn will be notified of the error to interrupt the stream. This check is necessary to ensure snd_buf and nego_ff are consistent. Note that previously, if fast-forward was conducted even on connection error, no sending would occur as qcc_io_send() also check these flags. However, there is a risk that stconn is never notified of the error status, thus it is considered as a bug. Its impact is minimal for now as fast-forward is disable by default on QUIC. By fixing it, it should be possible to reactive it soon. This should be backported up to 2.9.
This commit is contained in:
parent
235e8f1afd
commit
19f4f4d890
@ -2868,6 +2868,15 @@ static size_t qmux_strm_nego_ff(struct stconn *sc, struct buffer *input,
|
||||
goto end;
|
||||
}
|
||||
|
||||
if (qcs->qcc->flags & (QC_CF_ERR_CONN|QC_CF_ERRL)) {
|
||||
/* Disable fast-forward if connection is on error. Eventually,
|
||||
* error will be reported to stream-conn if snd_buf is invoked.
|
||||
*/
|
||||
TRACE_DEVEL("connection in error", QMUX_EV_STRM_SEND, qcs->qcc->conn, qcs);
|
||||
qcs->sd->iobuf.flags |= IOBUF_FL_NO_FF;
|
||||
goto end;
|
||||
}
|
||||
|
||||
/* Alawys disable splicing */
|
||||
qcs->sd->iobuf.flags |= IOBUF_FL_NO_SPLICING;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user