MINOR: mux-h2: extract the stream dump function out of h2_show_fd()
The function will be reusable to dump streams, so let's extract it.
Note that due to "last_h2s" being originally printed as a prefix for
the stream dump, now the pointer is displayed by the caller instead.
diff --git a/src/mux_h2.c b/src/mux_h2.c
index 5d8cb9d..cf6a6ab 100644
--- a/src/mux_h2.c
+++ b/src/mux_h2.c
@@ -6737,6 +6737,42 @@
return total;
}
+/* appends some info about stream <h2s> to buffer <msg>, or does nothing if
+ * <h2s> is NULL. Returns non-zero if the stream is considered suspicious.
+ */
+static int h2_dump_h2s_info(struct buffer *msg, const struct h2s *h2s)
+{
+ int ret = 0;
+
+ if (!h2s)
+ return ret;
+
+ chunk_appendf(msg, " h2s.id=%d .st=%s .flg=0x%04x .rxbuf=%u@%p+%u/%u .sc=%p",
+ h2s->id, h2s_st_to_str(h2s->st), h2s->flags,
+ (unsigned int)b_data(&h2s->rxbuf), b_orig(&h2s->rxbuf),
+ (unsigned int)b_head_ofs(&h2s->rxbuf), (unsigned int)b_size(&h2s->rxbuf),
+ h2s_sc(h2s));
+ if (h2s_sc(h2s))
+ chunk_appendf(msg, "(.flg=0x%08x .app=%p)",
+ h2s_sc(h2s)->flags, h2s_sc(h2s)->app);
+
+ chunk_appendf(msg, " sd=%p", h2s->sd);
+ chunk_appendf(msg, "(.flg=0x%08x)", se_fl_get(h2s->sd));
+
+ chunk_appendf(msg, " .subs=%p", h2s->subs);
+ if (h2s->subs) {
+ chunk_appendf(msg, "(ev=%d tl=%p", h2s->subs->events, h2s->subs->tasklet);
+ chunk_appendf(msg, " tl.calls=%d tl.ctx=%p tl.fct=",
+ h2s->subs->tasklet->calls,
+ h2s->subs->tasklet->context);
+ if (h2s->subs->tasklet->calls >= 1000000)
+ ret = 1;
+ resolve_sym_name(msg, NULL, h2s->subs->tasklet->process);
+ chunk_appendf(msg, ")");
+ }
+ return ret;
+}
+
/* for debugging with CLI's "show fd" command */
static int h2_show_fd(struct buffer *msg, struct connection *conn)
{
@@ -6788,29 +6824,8 @@
(unsigned int)b_head_ofs(tmbuf), (unsigned int)b_size(tmbuf));
if (h2s) {
- chunk_appendf(msg, " last_h2s=%p .id=%d .st=%s .flg=0x%04x .rxbuf=%u@%p+%u/%u .sc=%p",
- h2s, h2s->id, h2s_st_to_str(h2s->st), h2s->flags,
- (unsigned int)b_data(&h2s->rxbuf), b_orig(&h2s->rxbuf),
- (unsigned int)b_head_ofs(&h2s->rxbuf), (unsigned int)b_size(&h2s->rxbuf),
- h2s_sc(h2s));
- if (h2s_sc(h2s))
- chunk_appendf(msg, "(.flg=0x%08x .app=%p)",
- h2s_sc(h2s)->flags, h2s_sc(h2s)->app);
-
- chunk_appendf(msg, "sd=%p", h2s->sd);
- chunk_appendf(msg, "(.flg=0x%08x)", se_fl_get(h2s->sd));
-
- chunk_appendf(msg, " .subs=%p", h2s->subs);
- if (h2s->subs) {
- chunk_appendf(msg, "(ev=%d tl=%p", h2s->subs->events, h2s->subs->tasklet);
- chunk_appendf(msg, " tl.calls=%d tl.ctx=%p tl.fct=",
- h2s->subs->tasklet->calls,
- h2s->subs->tasklet->context);
- if (h2s->subs->tasklet->calls >= 1000000)
- ret = 1;
- resolve_sym_name(msg, NULL, h2s->subs->tasklet->process);
- chunk_appendf(msg, ")");
- }
+ chunk_appendf(msg, " last_h2s=%p", h2s);
+ ret |= h2_dump_h2s_info(msg, h2s);
}
return ret;
}