mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-26 08:11:21 +02:00
MINOR: h3: add traces on frame recv
Add h3 traces events for several received frames : SETTINGS, HEADERS and DATA.
This commit is contained in:
parent
016aa93088
commit
494512d00f
18
src/h3.c
18
src/h3.c
@ -43,6 +43,14 @@ static void h3_trace(enum trace_level level, uint64_t mask,
|
|||||||
const void *a1, const void *a2, const void *a3, const void *a4);
|
const void *a1, const void *a2, const void *a3, const void *a4);
|
||||||
|
|
||||||
static const struct trace_event h3_trace_events[] = {
|
static const struct trace_event h3_trace_events[] = {
|
||||||
|
#define H3_EV_RX_FRAME (1ULL << 0)
|
||||||
|
{ .mask = H3_EV_RX_FRAME, .name = "rx_frame", .desc = "receipt of any H3 frame" },
|
||||||
|
#define H3_EV_RX_DATA (1ULL << 1)
|
||||||
|
{ .mask = H3_EV_RX_DATA, .name = "rx_data", .desc = "receipt of H3 DATA frame" },
|
||||||
|
#define H3_EV_RX_HDR (1ULL << 2)
|
||||||
|
{ .mask = H3_EV_RX_HDR, .name = "rx_hdr", .desc = "receipt of H3 HEADERS frame" },
|
||||||
|
#define H3_EV_RX_SETTINGS (1ULL << 3)
|
||||||
|
{ .mask = H3_EV_RX_SETTINGS, .name = "rx_settings", .desc = "receipt of H3 SETTINGS frame" },
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -320,6 +328,8 @@ static int h3_headers_to_htx(struct qcs *qcs, struct ncbuf *buf, uint64_t len,
|
|||||||
struct ist authority = IST_NULL;
|
struct ist authority = IST_NULL;
|
||||||
int hdr_idx;
|
int hdr_idx;
|
||||||
|
|
||||||
|
TRACE_ENTER(H3_EV_RX_FRAME|H3_EV_RX_HDR, qcs->qcc->conn, qcs);
|
||||||
|
|
||||||
/* TODO support buffer wrapping */
|
/* TODO support buffer wrapping */
|
||||||
BUG_ON(ncb_head(buf) + len >= ncb_wrap(buf));
|
BUG_ON(ncb_head(buf) + len >= ncb_wrap(buf));
|
||||||
if (qpack_decode_fs((const unsigned char *)ncb_head(buf), len, tmp, list) < 0)
|
if (qpack_decode_fs((const unsigned char *)ncb_head(buf), len, tmp, list) < 0)
|
||||||
@ -392,6 +402,7 @@ static int h3_headers_to_htx(struct qcs *qcs, struct ncbuf *buf, uint64_t len,
|
|||||||
b_free(&htx_buf);
|
b_free(&htx_buf);
|
||||||
offer_buffers(NULL, 1);
|
offer_buffers(NULL, 1);
|
||||||
|
|
||||||
|
TRACE_LEAVE(H3_EV_RX_FRAME|H3_EV_RX_HDR, qcs->qcc->conn, qcs);
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,6 +421,8 @@ static int h3_data_to_htx(struct qcs *qcs, struct ncbuf *buf, uint64_t len,
|
|||||||
int htx_space;
|
int htx_space;
|
||||||
char *head;
|
char *head;
|
||||||
|
|
||||||
|
TRACE_ENTER(H3_EV_RX_FRAME|H3_EV_RX_DATA, qcs->qcc->conn, qcs);
|
||||||
|
|
||||||
appbuf = qc_get_buf(qcs, &qcs->rx.app_buf);
|
appbuf = qc_get_buf(qcs, &qcs->rx.app_buf);
|
||||||
BUG_ON(!appbuf);
|
BUG_ON(!appbuf);
|
||||||
htx = htx_from_buf(appbuf);
|
htx = htx_from_buf(appbuf);
|
||||||
@ -456,6 +469,8 @@ static int h3_data_to_htx(struct qcs *qcs, struct ncbuf *buf, uint64_t len,
|
|||||||
|
|
||||||
out:
|
out:
|
||||||
htx_to_buf(htx, appbuf);
|
htx_to_buf(htx, appbuf);
|
||||||
|
|
||||||
|
TRACE_LEAVE(H3_EV_RX_FRAME|H3_EV_RX_DATA, qcs->qcc->conn, qcs);
|
||||||
return htx_sent;
|
return htx_sent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -471,6 +486,8 @@ static size_t h3_parse_settings_frm(struct h3c *h3c, const struct ncbuf *rxbuf,
|
|||||||
size_t ret = 0;
|
size_t ret = 0;
|
||||||
long mask = 0; /* used to detect duplicated settings identifier */
|
long mask = 0; /* used to detect duplicated settings identifier */
|
||||||
|
|
||||||
|
TRACE_ENTER(H3_EV_RX_FRAME|H3_EV_RX_SETTINGS, h3c->qcc->conn);
|
||||||
|
|
||||||
b = h3_b_dup(rxbuf);
|
b = h3_b_dup(rxbuf);
|
||||||
b_set_data(&b, len);
|
b_set_data(&b, len);
|
||||||
|
|
||||||
@ -531,6 +548,7 @@ static size_t h3_parse_settings_frm(struct h3c *h3c, const struct ncbuf *rxbuf,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRACE_LEAVE(H3_EV_RX_FRAME|H3_EV_RX_SETTINGS);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user