mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-14 07:24:32 +00:00
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.
This commit is contained in:
parent
c9acc31018
commit
846cc046ae
@ -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 @@ static inline struct qc_stream_desc *qcc_get_stream(struct qcc *qcc, uint64_t id
|
||||
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 */
|
||||
|
9
src/h3.c
9
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 @@ static int h3_headers_to_htx(struct qcs *qcs, struct buffer *buf, uint64_t len,
|
||||
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.
|
||||
|
@ -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 @@ static int hq_interop_decode_qcs(struct qcs *qcs, int fin, void *ctx)
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user