]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: h3: add traces on h3_init_uni_stream() error paths
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 8 Mar 2023 09:25:39 +0000 (10:25 +0100)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Wed, 8 Mar 2023 13:32:30 +0000 (14:32 +0100)
Complete traces on h3_init_uni_stream(). This ensures there is always a
dedicated trace for each error paths.

This should be backported up to 2.7.

src/h3.c

index c912c0a15fed29c01e550dad239b815c85494f7e..d52566cb7155335a88d272e20a0dc443e9ecc35b 100644 (file)
--- a/src/h3.c
+++ b/src/h3.c
@@ -187,8 +187,9 @@ static ssize_t h3_init_uni_stream(struct h3c *h3c, struct qcs *qcs,
        switch (type) {
        case H3_UNI_S_T_CTRL:
                if (h3c->flags & H3_CF_UNI_CTRL_SET) {
+                       TRACE_ERROR("duplicated control stream", H3_EV_H3S_NEW, qcs->qcc->conn, qcs);
                        qcc_emit_cc_app(qcs->qcc, H3_STREAM_CREATION_ERROR, 1);
-                       return -1;
+                       goto err;
                }
                h3c->flags |= H3_CF_UNI_CTRL_SET;
                h3s->type = H3S_T_CTRL;
@@ -201,8 +202,9 @@ static ssize_t h3_init_uni_stream(struct h3c *h3c, struct qcs *qcs,
 
        case H3_UNI_S_T_QPACK_DEC:
                if (h3c->flags & H3_CF_UNI_QPACK_DEC_SET) {
+                       TRACE_ERROR("duplicated qpack decoder stream", H3_EV_H3S_NEW, qcs->qcc->conn, qcs);
                        qcc_emit_cc_app(qcs->qcc, H3_STREAM_CREATION_ERROR, 1);
-                       return -1;
+                       goto err;
                }
                h3c->flags |= H3_CF_UNI_QPACK_DEC_SET;
                h3s->type = H3S_T_QPACK_DEC;
@@ -211,8 +213,9 @@ static ssize_t h3_init_uni_stream(struct h3c *h3c, struct qcs *qcs,
 
        case H3_UNI_S_T_QPACK_ENC:
                if (h3c->flags & H3_CF_UNI_QPACK_ENC_SET) {
+                       TRACE_ERROR("duplicated qpack encoder stream", H3_EV_H3S_NEW, qcs->qcc->conn, qcs);
                        qcc_emit_cc_app(qcs->qcc, H3_STREAM_CREATION_ERROR, 1);
-                       return -1;
+                       goto err;
                }
                h3c->flags |= H3_CF_UNI_QPACK_ENC_SET;
                h3s->type = H3S_T_QPACK_ENC;
@@ -225,14 +228,19 @@ static ssize_t h3_init_uni_stream(struct h3c *h3c, struct qcs *qcs,
                 * Implementations MUST [...] abort reading on unidirectional
                 * streams that have unknown or unsupported types.
                 */
+               TRACE_STATE("abort reading on unknown uni stream type", H3_EV_H3S_NEW, qcs->qcc->conn, qcs);
                qcc_abort_stream_read(qcs);
-               return -1;
-       };
+               goto err;
+       }
 
        h3s->flags |= H3_SF_UNI_INIT;
 
        TRACE_LEAVE(H3_EV_H3S_NEW, qcs->qcc->conn, qcs);
        return len;
+
+ err:
+       TRACE_DEVEL("leaving on error", H3_EV_H3S_NEW, qcs->qcc->conn, qcs);
+       return -1;
 }
 
 /* Parse a buffer <b> for a <qcs> uni-stream which does not contains H3 frames.