MINOR: h3: add traces for stream sending function
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 29 Jan 2024 14:15:27 +0000 (15:15 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 31 Jan 2024 14:44:56 +0000 (15:44 +0100)
Replace h3_debug_printf() by real trace for functions used by stream
layer snd_buf callback. A new event type H3_EV_STRM_SEND is created for
the occasion.

This should be backported up to 2.6 to help investigate H3 issues on
stable releases. Note that h3_nego_ff/h3_done_ff definition are not
available from 2.8.

(cherry picked from commit df5cf9123fff25eaa8693b97e5c219827bd45581)
Signed-off-by: Willy Tarreau <w@1wt.eu>

src/h3.c

index 1ffc76b..bf8d3cb 100644 (file)
--- a/src/h3.c
+++ b/src/h3.c
@@ -72,6 +72,8 @@ static const struct trace_event h3_trace_events[] = {
        { .mask = H3_EV_H3C_NEW,      .name = "h3c_new",     .desc = "new H3 connection" },
 #define           H3_EV_H3C_END       (1ULL << 10)
        { .mask = H3_EV_H3C_END,      .name = "h3c_end",     .desc = "H3 connection terminated" },
+#define           H3_EV_STRM_SEND     (1ULL << 12)
+       { .mask = H3_EV_STRM_SEND,    .name = "strm_send",   .desc = "sending data for stream" },
        { }
 };
 
@@ -1901,7 +1903,7 @@ static size_t h3_snd_buf(struct qcs *qcs, struct buffer *buf, size_t count)
        int32_t idx;
        int ret = 0;
 
-       h3_debug_printf(stderr, "%s\n", __func__);
+       TRACE_ENTER(H3_EV_STRM_SEND, qcs->qcc->conn, qcs);
 
        htx = htx_from_buf(buf);
 
@@ -2000,6 +2002,7 @@ static size_t h3_snd_buf(struct qcs *qcs, struct buffer *buf, size_t count)
  out:
        htx_to_buf(htx, buf);
 
+       TRACE_LEAVE(H3_EV_STRM_SEND, qcs->qcc->conn, qcs);
        return total;
 }
 
@@ -2009,7 +2012,7 @@ static size_t h3_nego_ff(struct qcs *qcs, size_t count)
        int hsize;
        size_t sz, ret = 0;
 
-       h3_debug_printf(stderr, "%s\n", __func__);
+       TRACE_ENTER(H3_EV_STRM_SEND, qcs->qcc->conn, qcs);
 
        res = mux_get_buf(qcs);
        if (b_is_null(res)) {
@@ -2046,12 +2049,14 @@ static size_t h3_nego_ff(struct qcs *qcs, size_t count)
 
        ret = count;
   end:
+       TRACE_LEAVE(H3_EV_STRM_SEND, qcs->qcc->conn, qcs);
        return ret;
 }
 
 static size_t h3_done_ff(struct qcs *qcs)
 {
        size_t total = qcs->sd->iobuf.data;
+       TRACE_ENTER(H3_EV_STRM_SEND, qcs->qcc->conn, qcs);
 
        h3_debug_printf(stderr, "%s\n", __func__);
 
@@ -2066,6 +2071,7 @@ static size_t h3_done_ff(struct qcs *qcs)
        qcs->sd->iobuf.offset = 0;
        qcs->sd->iobuf.data = 0;
 
+       TRACE_LEAVE(H3_EV_STRM_SEND, qcs->qcc->conn, qcs);
        return total;
 }