]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: h3: add traces for connection init stage
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 15 Dec 2023 16:30:36 +0000 (17:30 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 20 Dec 2023 14:27:11 +0000 (15:27 +0100)
Add traces H3_EV_H3C_NEW. These are used for h3_init() and h3_finalize()
functions.

src/h3.c

index 24db5e96cdd4b2be08df699a791bd7c4bd984aab..e878beb5bb79dd798ce5562234a280fc315c2598 100644 (file)
--- a/src/h3.c
+++ b/src/h3.c
@@ -69,7 +69,9 @@ static const struct trace_event h3_trace_events[] = {
        { .mask = H3_EV_H3S_NEW,      .name = "h3s_new",     .desc = "new H3 stream" },
 #define           H3_EV_H3S_END       (1ULL <<  9)
        { .mask = H3_EV_H3S_END,      .name = "h3s_end",     .desc = "H3 stream terminated" },
-#define           H3_EV_H3C_END       (1ULL <<  10)
+#define           H3_EV_H3C_NEW       (1ULL << 10)
+       { .mask = H3_EV_H3C_NEW,      .name = "h3c_new",     .desc = "new H3 connection" },
+#define           H3_EV_H3C_END       (1ULL << 11)
        { .mask = H3_EV_H3C_END,      .name = "h3c_end",     .desc = "H3 connection terminated" },
        { }
 };
@@ -2178,9 +2180,13 @@ static int h3_init(struct qcc *qcc)
        struct h3c *h3c;
        const struct listener *li = __objt_listener(qcc->conn->target);
 
+       TRACE_ENTER(H3_EV_H3C_NEW, qcc->conn);
+
        h3c = pool_alloc(pool_head_h3c);
-       if (!h3c)
+       if (!h3c) {
+               TRACE_ERROR("cannot allocate h3c", H3_EV_H3C_NEW, qcc->conn);
                goto fail_no_h3;
+       }
 
        h3c->qcc = qcc;
        h3c->ctrl_strm = NULL;
@@ -2194,9 +2200,11 @@ static int h3_init(struct qcc *qcc)
                                   &h3_stats_module);
        LIST_INIT(&h3c->buf_wait.list);
 
+       TRACE_LEAVE(H3_EV_H3C_NEW, qcc->conn);
        return 1;
 
  fail_no_h3:
+       TRACE_DEVEL("leaving on error", H3_EV_H3C_NEW, qcc->conn);
        return 0;
 }
 
@@ -2207,16 +2215,26 @@ static int h3_init(struct qcc *qcc)
 static int h3_finalize(void *ctx)
 {
        struct h3c *h3c = ctx;
+       struct qcc *qcc = h3c->qcc;
        struct qcs *qcs;
 
-       qcs = qcc_init_stream_local(h3c->qcc, 0);
-       if (!qcs)
-               return 1;
+       TRACE_ENTER(H3_EV_H3C_NEW, qcc->conn);
+
+       qcs = qcc_init_stream_local(qcc, 0);
+       if (!qcs) {
+               TRACE_ERROR("cannot init control stream", H3_EV_H3C_NEW, qcc->conn);
+               goto err;
+       }
 
        h3_control_send(qcs, h3c);
        h3c->ctrl_strm = qcs;
 
+       TRACE_LEAVE(H3_EV_H3C_NEW, qcc->conn);
        return 0;
+
+ err:
+       TRACE_DEVEL("leaving on error", H3_EV_H3C_NEW, qcc->conn);
+       return 1;
 }
 
 /* Send a HTTP/3 GOAWAY followed by a CONNECTION_CLOSE_APP. */