mirror of
https://github.com/haproxy/haproxy.git
synced 2026-02-20 00:10:41 -05:00
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.
This commit is contained in:
parent
16f3da4624
commit
c0156790e6
4 changed files with 12 additions and 8 deletions
|
|
@ -136,8 +136,8 @@ struct qcs {
|
|||
/* QUIC application layer operations */
|
||||
struct qcc_app_ops {
|
||||
int (*init)(struct qcc *qcc);
|
||||
int (*attach)(struct qcs *qcs);
|
||||
int (*decode_qcs)(struct qcs *qcs, int fin, void *ctx);
|
||||
int (*attach)(struct qcs *qcs, void *conn_ctx);
|
||||
int (*decode_qcs)(struct qcs *qcs, int fin);
|
||||
size_t (*snd_buf)(struct stconn *sc, struct buffer *buf, size_t count, int flags);
|
||||
void (*detach)(struct qcs *qcs);
|
||||
int (*finalize)(void *ctx);
|
||||
|
|
|
|||
10
src/h3.c
10
src/h3.c
|
|
@ -133,6 +133,8 @@ DECLARE_STATIC_POOL(pool_head_h3c, "h3c", sizeof(struct h3c));
|
|||
#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 @@ static size_t h3_parse_settings_frm(struct h3c *h3c, const struct ncbuf *rxbuf,
|
|||
*
|
||||
* 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 @@ size_t h3_snd_buf(struct stconn *sc, struct buffer *buf, size_t count, int flags
|
|||
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 @@ static int h3_attach(struct qcs *qcs)
|
|||
return 1;
|
||||
|
||||
qcs->ctx = h3s;
|
||||
h3s->h3c = conn_ctx;
|
||||
|
||||
h3s->demux_frame_len = 0;
|
||||
h3s->demux_frame_type = 0;
|
||||
h3s->flags = 0;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ struct qcs *qcs_new(struct qcc *qcc, uint64_t id, enum qcs_type type)
|
|||
|
||||
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 @@ static int qcc_decode_qcs(struct qcc *qcc, struct qcs *qcs)
|
|||
{
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue