diff --git a/include/haproxy/qpack-dec.h b/include/haproxy/qpack-dec.h index 991e1a9f7..a5d9ba197 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 3dc9facc5..a18e7d7e2 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 82ffd81e0..f5ba55144 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 */ }