From: Amaury Denoyelle Date: Tue, 14 Jun 2022 14:34:32 +0000 (+0200) Subject: MINOR: qpack: reduce dependencies on other modules X-Git-Tag: v2.7-dev1~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=53eef46b88539a7fd1f2927dcf75025cb4bef40a;p=thirdparty%2Fhaproxy.git MINOR: qpack: reduce dependencies on other modules Clean up QPACK decoder API by removing dependencies on ncbuf and MUX-QUIC. This reduces includes statements. It will also help to implement a standalone QPACK decoder. --- diff --git a/include/haproxy/qpack-dec.h b/include/haproxy/qpack-dec.h index 991e1a9f7a..a5d9ba197d 100644 --- a/include/haproxy/qpack-dec.h +++ b/include/haproxy/qpack-dec.h @@ -21,8 +21,7 @@ #ifndef _HAPROXY_QPACK_DEC_H #define _HAPROXY_QPACK_DEC_H -#include - +struct buffer; struct http_hdr; /* Internal QPACK processing errors. @@ -45,7 +44,7 @@ struct qpack_dec { int qpack_decode_fs(const unsigned char *buf, uint64_t len, struct buffer *tmp, struct http_hdr *list); -int qpack_decode_enc(struct qcs *qcs, void *ctx); -int qpack_decode_dec(struct qcs *qcs, void *ctx); +int qpack_decode_enc(struct buffer *buf, void *ctx); +int qpack_decode_dec(struct buffer *buf, void *ctx); #endif /* _HAPROXY_QPACK_DEC_H */ diff --git a/src/h3.c b/src/h3.c index 3dc9facc5b..a18e7d7e26 100644 --- a/src/h3.c +++ b/src/h3.c @@ -230,11 +230,11 @@ static ssize_t h3_parse_uni_stream_no_h3(struct qcs *qcs, struct buffer *b) switch (h3s->type) { case H3S_T_QPACK_DEC: - if (qpack_decode_dec(qcs, NULL)) + if (qpack_decode_dec(b, NULL)) return -1; break; case H3S_T_QPACK_ENC: - if (qpack_decode_enc(qcs, NULL)) + if (qpack_decode_enc(b, NULL)) return -1; break; case H3S_T_UNKNOWN: diff --git a/src/qpack-dec.c b/src/qpack-dec.c index 82ffd81e05..f5ba551446 100644 --- a/src/qpack-dec.c +++ b/src/qpack-dec.c @@ -27,7 +27,6 @@ #include #include #include -#include #include #include #include @@ -97,22 +96,20 @@ static uint64_t qpack_get_varint(const unsigned char **buf, uint64_t *len_in, in * * Returns 0 on success else non-zero. */ -int qpack_decode_enc(struct qcs *qcs, void *ctx) +int qpack_decode_enc(struct buffer *buf, void *ctx) { size_t len; - struct ncbuf *rxbuf; unsigned char inst; - rxbuf = &qcs->rx.ncbuf; - len = ncb_data(rxbuf, 0); - qpack_debug_hexdump(stderr, "[QPACK-DEC-ENC] ", ncb_head(rxbuf), 0, len); + len = b_data(buf); + qpack_debug_hexdump(stderr, "[QPACK-DEC-ENC] ", b_head(buf), 0, len); if (!len) { qpack_debug_printf(stderr, "[QPACK-DEC-ENC] empty stream\n"); return 0; } - inst = (unsigned char)*ncb_head(rxbuf) & QPACK_ENC_INST_BITMASK; + inst = (unsigned char)*b_head(buf) & QPACK_ENC_INST_BITMASK; if (inst == QPACK_ENC_INST_DUP) { /* Duplicate */ } @@ -133,22 +130,20 @@ int qpack_decode_enc(struct qcs *qcs, void *ctx) * * Returns 0 on success else non-zero. */ -int qpack_decode_dec(struct qcs *qcs, void *ctx) +int qpack_decode_dec(struct buffer *buf, void *ctx) { size_t len; - struct ncbuf *rxbuf; unsigned char inst; - rxbuf = &qcs->rx.ncbuf; - len = ncb_data(rxbuf, 0); - qpack_debug_hexdump(stderr, "[QPACK-DEC-DEC] ", ncb_head(rxbuf), 0, len); + len = b_data(buf); + qpack_debug_hexdump(stderr, "[QPACK-DEC-DEC] ", b_head(buf), 0, len); if (!len) { qpack_debug_printf(stderr, "[QPACK-DEC-DEC] empty stream\n"); return 0; } - inst = (unsigned char)*ncb_head(rxbuf) & QPACK_DEC_INST_BITMASK; + inst = (unsigned char)*b_head(buf) & QPACK_DEC_INST_BITMASK; if (inst == QPACK_DEC_INST_ICINC) { /* Insert count increment */ }