MINOR: mux-quic: set EOS on rcv_buf
Flags EOI/EOS must be set on conn-stream when transfering the last data
of a stream in rcv_buf. This is activated if qcs HTX buffer has the EOM
flag and has been fully transfered.
diff --git a/src/mux_quic.c b/src/mux_quic.c
index 3424a22..2ed269e 100644
--- a/src/mux_quic.c
+++ b/src/mux_quic.c
@@ -558,6 +558,7 @@
struct htx *qcs_htx = NULL;
struct htx *cs_htx = NULL;
size_t ret = 0;
+ char fin = 0;
fprintf(stderr, "%s\n", __func__);
@@ -582,8 +583,10 @@
BUG_ON(qcs_htx->flags & HTX_FL_PARSING_ERROR);
/* Copy EOM from src to dst buffer if all data copied. */
- if (htx_is_empty(qcs_htx))
- cs_htx->flags |= (qcs_htx->flags & HTX_FL_EOM);
+ if (htx_is_empty(qcs_htx) && (qcs_htx->flags & HTX_FL_EOM)) {
+ cs_htx->flags |= HTX_FL_EOM;
+ fin = 1;
+ }
cs_htx->extra = qcs_htx->extra ? (qcs_htx->data + qcs_htx->extra) : 0;
htx_to_buf(cs_htx, buf);
@@ -599,7 +602,8 @@
if (cs->flags & CS_FL_ERR_PENDING)
cs->flags |= CS_FL_ERROR;
- /* TODO put CS_FL_EOI/EOS on fin */
+ if (fin)
+ cs->flags |= (CS_FL_EOI|CS_FL_EOS);
if (b_size(&qcs->rx.app_buf)) {
b_free(&qcs->rx.app_buf);