diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-11 17:06:50 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-11 17:06:50 +0000 |
commit | 889a8235a21475be105941679b10f92532d26ac1 (patch) | |
tree | 19c3c098346c0d07f306e64960bb66ff452a650d /src/mux_quic.c | |
parent | Adding upstream version 3.0.0. (diff) | |
download | haproxy-889a8235a21475be105941679b10f92532d26ac1.tar.xz haproxy-889a8235a21475be105941679b10f92532d26ac1.zip |
Adding upstream version 3.0.1.upstream/3.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/mux_quic.c')
-rw-r--r-- | src/mux_quic.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/mux_quic.c b/src/mux_quic.c index ae504ee..8272b93 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -3046,8 +3046,17 @@ static size_t qmux_strm_done_ff(struct stconn *sc) qcs->flags |= QC_SF_FIN_STREAM; } - if (!(qcs->flags & QC_SF_FIN_STREAM) && !sd->iobuf.data) + if (!(qcs->flags & QC_SF_FIN_STREAM) && !sd->iobuf.data) { + TRACE_STATE("no data sent", QMUX_EV_STRM_SEND, qcs->qcc->conn, qcs); + + /* There is nothing to forward and the SD was blocked after a + * successful nego by the producer. We can try to release the + * TXBUF to retry. In this case, the TX buf MUST exist. + */ + if ((qcs->sd->iobuf.flags & IOBUF_FL_FF_WANT_ROOM) && !qcc_release_stream_txbuf(qcs)) + qcs->sd->iobuf.flags &= ~(IOBUF_FL_FF_BLOCKED|IOBUF_FL_FF_WANT_ROOM); goto end; + } data += sd->iobuf.offset; total = qcs->qcc->app_ops->done_ff(qcs); |