MINOR: h3: add h3c pointer into h3s instance
As a mirror to qcc/qcs types, add a h3c pointer into h3s struct. This
should help to clean up H3 code and avoid to use qcs.qcc.ctx to retrieve
the h3c instance.
diff --git a/src/h3.c b/src/h3.c
index 1b8e378..b9a9fed 100644
--- a/src/h3.c
+++ b/src/h3.c
@@ -133,6 +133,8 @@
#define H3_SF_UNI_NO_H3 0x00000002 /* unidirectional stream does not carry H3 frames */
struct h3s {
+ struct h3c *h3c;
+
enum h3s_t type;
int demux_frame_len;
int demux_frame_type;
@@ -574,11 +576,11 @@
*
* Returns 0 on success else non-zero.
*/
-static int h3_decode_qcs(struct qcs *qcs, int fin, void *ctx)
+static int h3_decode_qcs(struct qcs *qcs, int fin)
{
struct ncbuf *rxbuf = &qcs->rx.ncbuf;
- struct h3c *h3c = ctx;
struct h3s *h3s = qcs->ctx;
+ struct h3c *h3c = h3s->h3c;
ssize_t ret;
h3_debug_printf(stderr, "%s: STREAM ID: %lu\n", __func__, qcs->id);
@@ -1020,7 +1022,7 @@
return total;
}
-static int h3_attach(struct qcs *qcs)
+static int h3_attach(struct qcs *qcs, void *conn_ctx)
{
struct h3s *h3s;
@@ -1031,6 +1033,8 @@
return 1;
qcs->ctx = h3s;
+ h3s->h3c = conn_ctx;
+
h3s->demux_frame_len = 0;
h3s->demux_frame_type = 0;
h3s->flags = 0;
diff --git a/src/hq_interop.c b/src/hq_interop.c
index c9ab683..f5c0e79 100644
--- a/src/hq_interop.c
+++ b/src/hq_interop.c
@@ -9,7 +9,7 @@
#include <haproxy/mux_quic.h>
#include <haproxy/ncbuf.h>
-static int hq_interop_decode_qcs(struct qcs *qcs, int fin, void *ctx)
+static int hq_interop_decode_qcs(struct qcs *qcs, int fin)
{
struct ncbuf *rxbuf = &qcs->rx.ncbuf;
struct htx *htx;
diff --git a/src/mux_quic.c b/src/mux_quic.c
index 04ed1ba..84237c3 100644
--- a/src/mux_quic.c
+++ b/src/mux_quic.c
@@ -139,7 +139,7 @@
qcs->id = qcs->by_id.key = id;
if (qcc->app_ops->attach) {
- if (qcc->app_ops->attach(qcs))
+ if (qcc->app_ops->attach(qcs, qcc->ctx))
goto err;
}
@@ -434,7 +434,7 @@
{
TRACE_ENTER(QMUX_EV_QCS_RECV, qcc->conn, qcs);
- if (qcc->app_ops->decode_qcs(qcs, qcs->flags & QC_SF_FIN_RECV, qcc->ctx)) {
+ if (qcc->app_ops->decode_qcs(qcs, qcs->flags & QC_SF_FIN_RECV)) {
TRACE_DEVEL("leaving on decoding error", QMUX_EV_QCS_RECV, qcc->conn, qcs);
return 1;
}