From: Amaury Denoyelle Date: Fri, 3 Dec 2021 13:39:29 +0000 (+0100) Subject: MEDIUM: mux-quic: wake up xprt on data transferred X-Git-Tag: v2.6-dev1~314 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e257d9e8ec576b92c0d6a2fdabdef5085102ec9a;p=thirdparty%2Fhaproxy.git MEDIUM: mux-quic: wake up xprt on data transferred On qc_send, data are transferred for each stream from their qcs.buf to the qcs.xprt_buf. Wake up the xprt to warn about new data available for transmission. --- diff --git a/src/mux_quic.c b/src/mux_quic.c index 1f49e010c8..c11e1cedd3 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -164,6 +164,7 @@ static int qcs_push_frame(struct qcs *qcs, struct buffer *payload, int fin, uint static int qc_send(struct qcc *qcc) { struct eb64_node *node; + int xprt_wake = 0; int ret; fprintf(stderr, "%s\n", __func__); @@ -190,10 +191,10 @@ static int qc_send(struct qcc *qcc) if (ret < 0) ABORT_NOW(); - if (ret > 0) + if (ret > 0) { qcs_notify_send(qcs); - - /* TODO wake-up xprt if data were transfered */ + xprt_wake = 1; + } fprintf(stderr, "%s ret=%d\n", __func__, ret); qcs->tx.offset += ret; @@ -206,6 +207,9 @@ static int qc_send(struct qcc *qcc) node = eb64_next(node); } + if (xprt_wake) + tasklet_wakeup(((struct ssl_sock_ctx *)(qcc->conn->xprt_ctx))->wait_event.tasklet); + return ret; }