static struct h2s *h2c_bck_stream_new(struct h2c *h2c, struct stconn *sc, struct session *sess);
static void h2s_alert(struct h2s *h2s);
static inline void h2_remove_from_list(struct h2s *h2s);
+static int h2_dump_h2c_info(struct buffer *msg, struct h2c *h2c, const char *pfx);
+static int h2_dump_h2s_info(struct buffer *msg, const struct h2s *h2s, const char *pfx);
/* returns the stconn associated to the H2 stream */
static forceinline struct stconn *h2s_sc(const struct h2s *h2s)
{
int ret = 0;
struct h2s *h2s = __sc_mux_strm(sc);
+ union mux_sctl_dbg_str_ctx *dbg_ctx;
+ struct buffer *buf;
switch (mux_sctl) {
case MUX_SCTL_SID:
if (output)
*((int64_t *)output) = h2s->id;
return ret;
+ case MUX_SCTL_DBG_STR:
+ dbg_ctx = output;
+ buf = get_trash_chunk();
+
+ if (dbg_ctx->arg.debug_flags & MUX_SCTL_DBG_STR_L_MUXS)
+ h2_dump_h2s_info(buf, h2s, NULL);
+
+ if (dbg_ctx->arg.debug_flags & MUX_SCTL_DBG_STR_L_MUXC)
+ h2_dump_h2c_info(buf, h2s->h2c, NULL);
+
+ if (dbg_ctx->arg.debug_flags & MUX_SCTL_DBG_STR_L_CONN)
+ chunk_appendf(buf, " conn.flg=%#08x", h2s->h2c->conn->flags);
+
+ /* other layers not implemented */
+ dbg_ctx->ret.buf = *buf;
+ return ret;
default:
return -1;