]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: mux-quic: rename stream purge function
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 8 Jul 2022 12:04:21 +0000 (14:04 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 11 Jul 2022 14:24:03 +0000 (16:24 +0200)
Rename qc_release_detached_streams() to qc_purge_streams(). The aim is
to have a more generic name. It's expected to complete this function to
add other criteria to purge dead streams.

Also the function documentation has been corrected. It does not return a
number of streams. Instead it is a boolean value, to true if at least
one stream was released.

src/mux_quic.c

index c6652e40943e581954b1cb425d52aafe11fe6f69..4c2e5a170bea47a9ec1b36dc6a2c03a8e0cfc5d0 100644 (file)
@@ -1341,34 +1341,39 @@ static int qc_recv(struct qcc *qcc)
        return 0;
 }
 
-/* Release all streams that are already marked as detached. This is only done
- * if their TX buffers are empty or if a CONNECTION_CLOSE has been received.
+
+/* Release all streams which have their transfer operation achieved.
  *
- * Return the number of released stream.
+ * Returns true if at least one stream is released.
  */
-static int qc_release_detached_streams(struct qcc *qcc)
+static int qc_purge_streams(struct qcc *qcc)
 {
        struct eb64_node *node;
        int release = 0;
 
+       TRACE_ENTER(QMUX_EV_QCC_WAKE);
+
        node = eb64_first(&qcc->streams_by_id);
        while (node) {
                struct qcs *qcs = eb64_entry(node, struct qcs, by_id);
                node = eb64_next(node);
 
+               /* Release detached streams with empty buffer. */
                if (qcs->flags & QC_SF_DETACH) {
                        if (!b_data(&qcs->tx.buf) &&
                            qcs->tx.offset == qcs->tx.sent_offset) {
+                               TRACE_DEVEL("purging detached stream", QMUX_EV_QCC_WAKE, qcs->qcc->conn, qcs);
                                qcs_destroy(qcs);
                                release = 1;
+                               continue;
                        }
-                       else {
-                               qcc->conn->xprt->subscribe(qcc->conn, qcc->conn->xprt_ctx,
-                                                          SUB_RETRY_SEND, &qcc->wait_event);
-                       }
+
+                       qcc->conn->xprt->subscribe(qcc->conn, qcc->conn->xprt_ctx,
+                                                  SUB_RETRY_SEND, &qcc->wait_event);
                }
        }
 
+       TRACE_LEAVE(QMUX_EV_QCC_WAKE);
        return release;
 }
 
@@ -1380,7 +1385,7 @@ static struct task *qc_io_cb(struct task *t, void *ctx, unsigned int status)
 
        qc_send(qcc);
 
-       if (qc_release_detached_streams(qcc)) {
+       if (qc_purge_streams(qcc)) {
                if (qcc_is_dead(qcc)) {
                        qc_release(qcc);
                }