From: Amaury Denoyelle Date: Mon, 3 Mar 2025 09:01:07 +0000 (+0100) Subject: MINOR: mux-quic: adapt return value of qcc_decode_qcs() X-Git-Tag: v3.2-dev7~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7b168e356f09e84f37b8a26f5c709fc33aed42cf;p=thirdparty%2Fhaproxy.git MINOR: mux-quic: adapt return value of qcc_decode_qcs() Change return value of qcc_decode_qcs(). It now directly returns the value from app_ops rcv_buf callback. Function documentation is updated to reflect this. For now, qcc_decode_qcs() return value is ignored by callers, so this patch should not have any functional change. However, it will become necessary when implementing multiple Rx buffers per QCS, as a loop will be implemented to invoke qcc_decode_qcs() on several contiguous buffers. Decoding must be stopped however as soon as an error is returned by rcv_buf callback. This is also the case in case of a null value, which indicates there is not enough data to continue decoding. --- diff --git a/src/mux_quic.c b/src/mux_quic.c index 44b4b538f..939136cf8 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -1181,9 +1181,12 @@ static void qcs_consume(struct qcs *qcs, uint64_t bytes, struct qc_stream_rxbuf } /* Decode the content of STREAM frames already received on the stream instance - * . + * from the connection. * - * Returns 0 on success else non-zero. + * Returns the result of app_ops rcv_buf callback, which is the number of bytes + * successfully transcoded, or a negative error code. If no error occurred but + * decoding cannot proceed due to missing data, the return value is 0. The + * value 0 may also be returned when dealing with a standalone FIN signal. */ static int qcc_decode_qcs(struct qcc *qcc, struct qcs *qcs) { @@ -1237,11 +1240,11 @@ static int qcc_decode_qcs(struct qcc *qcc, struct qcs *qcs) qcs_notify_recv(qcs); TRACE_LEAVE(QMUX_EV_QCS_RECV, qcc->conn, qcs); - return 0; + return ret; err: - TRACE_LEAVE(QMUX_EV_QCS_RECV, qcc->conn, qcs); - return 1; + TRACE_DEVEL("leaving on error", QMUX_EV_QCS_RECV, qcc->conn, qcs); + return ret; } /* Allocate if needed and retrieve stream buffer for data reception.