MINOR: mux-quic: factorize conn-stream attach
Provide a new function qc_attach_cs. This must be used by the app layer
when a conn-stream can be instantiated. This will simplify future
development.
diff --git a/include/haproxy/mux_quic.h b/include/haproxy/mux_quic.h
index f0c0a43..715f7e9 100644
--- a/include/haproxy/mux_quic.h
+++ b/include/haproxy/mux_quic.h
@@ -11,6 +11,7 @@
#include <haproxy/api.h>
#include <haproxy/connection.h>
#include <haproxy/mux_quic-t.h>
+#include <haproxy/stream.h>
#include <haproxy/xprt_quic-t.h>
struct qcs *qcs_new(struct qcc *qcc, uint64_t id, enum qcs_type type);
@@ -104,6 +105,19 @@
return eb64_entry(node, struct qc_stream_desc, by_id);
}
+static inline struct conn_stream *qc_attach_cs(struct qcs *qcs, struct buffer *buf)
+{
+ struct conn_stream *cs = cs_new();
+ if (!cs)
+ return NULL;
+ cs_attach_endp(cs, &qcs->qcc->conn->obj_type, qcs);
+
+ cs->ctx = qcs;
+ stream_new(qcs->qcc->conn->owner, cs, buf);
+
+ return cs;
+}
+
#endif /* USE_QUIC */
#endif /* _HAPROXY_MUX_QUIC_H */
diff --git a/src/h3.c b/src/h3.c
index a796845..3cce595 100644
--- a/src/h3.c
+++ b/src/h3.c
@@ -24,12 +24,11 @@
#include <haproxy/http.h>
#include <haproxy/htx.h>
#include <haproxy/istbuf.h>
-#include <haproxy/mux_quic-t.h>
+#include <haproxy/mux_quic.h>
#include <haproxy/pool.h>
#include <haproxy/qpack-dec.h>
#include <haproxy/qpack-enc.h>
#include <haproxy/quic_enc.h>
-#include <haproxy/stream.h>
#include <haproxy/tools.h>
#include <haproxy/xprt_quic.h>
@@ -174,14 +173,10 @@
if (fin)
htx->flags |= HTX_FL_EOM;
- cs = cs_new();
+ cs = qc_attach_cs(qcs, &htx_buf);
if (!cs)
return 1;
- cs_attach_endp(cs, &qcs->qcc->conn->obj_type, qcs);
-
cs->flags |= CS_FL_NOT_FIRST;
- cs->ctx = qcs;
- stream_new(qcs->qcc->conn->owner, cs, &htx_buf);
/* buffer is transferred to conn_stream and set to NULL
* except on stream creation error.
diff --git a/src/hq_interop.c b/src/hq_interop.c
index 0e5561d..7928373 100644
--- a/src/hq_interop.c
+++ b/src/hq_interop.c
@@ -6,8 +6,7 @@
#include <haproxy/dynbuf.h>
#include <haproxy/htx.h>
#include <haproxy/http.h>
-#include <haproxy/mux_quic-t.h>
-#include <haproxy/stream.h>
+#include <haproxy/mux_quic.h>
static int hq_interop_decode_qcs(struct qcs *qcs, int fin, void *ctx)
{
@@ -72,12 +71,9 @@
htx_add_endof(htx, HTX_BLK_EOH);
htx_to_buf(htx, &htx_buf);
- cs = cs_new();
+ cs = qc_attach_cs(qcs, &htx_buf);
if (!cs)
return -1;
- cs_attach_endp(cs, &qcs->qcc->conn->obj_type, qcs);
- cs->ctx = qcs;
- stream_new(qcs->qcc->conn->owner, cs, &htx_buf);
b_del(rxbuf, b_data(rxbuf));
b_free(&htx_buf);