From 284ddbfd3b45cc162ad98b68595c5569a2fc2ec2 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 1 Dec 2013 20:45:00 +0100 Subject: [PATCH] MINOR: stats: provide some appctx information in "show sess all" When dumping a session, it can be useful to know what applet it is connected to instead of having just the appctx pointer. We also report st0/st1/st2 to help debugging. --- src/dumpstats.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/dumpstats.c b/src/dumpstats.c index 6cc2bcd91..d1518b8db 100644 --- a/src/dumpstats.c +++ b/src/dumpstats.c @@ -3904,6 +3904,7 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct se extern const char *monthname[12]; char pn[INET6_ADDRSTRLEN]; struct connection *conn; + struct appctx *tmpctx; chunk_reset(&trash); @@ -4076,8 +4077,7 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct se TICKS_TO_MS(1000)) : "", sess->si[1].err_type); - conn = objt_conn(sess->si[0].end); - if (conn) { + if ((conn = objt_conn(sess->si[0].end)) != NULL) { chunk_appendf(&trash, " co0=%p ctrl=%s xprt=%s data=%s target=%s:%p\n", conn, @@ -4095,9 +4095,17 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct se conn->t.sock.fd >= 0 ? fdtab[conn->t.sock.fd].spec_p : 0, conn->t.sock.fd >= 0 ? fdtab[conn->t.sock.fd].updated : 0); } + else if ((tmpctx = objt_appctx(sess->si[0].end)) != NULL) { + chunk_appendf(&trash, + " app0=%p st0=%d st1=%d st2=%d applet=%s\n", + tmpctx, + tmpctx->st0, + tmpctx->st1, + tmpctx->st2, + tmpctx->applet->name); + } - conn = objt_conn(sess->si[1].end); - if (conn) { + if ((conn = objt_conn(sess->si[1].end)) != NULL) { chunk_appendf(&trash, " co1=%p ctrl=%s xprt=%s data=%s target=%s:%p\n", conn, @@ -4115,6 +4123,15 @@ static int stats_dump_full_sess_to_buffer(struct stream_interface *si, struct se conn->t.sock.fd >= 0 ? fdtab[conn->t.sock.fd].spec_p : 0, conn->t.sock.fd >= 0 ? fdtab[conn->t.sock.fd].updated : 0); } + else if ((tmpctx = objt_appctx(sess->si[1].end)) != NULL) { + chunk_appendf(&trash, + " app1=%p st0=%d st1=%d st2=%d applet=%s\n", + tmpctx, + tmpctx->st0, + tmpctx->st1, + tmpctx->st2, + tmpctx->applet->name); + } chunk_appendf(&trash, " req=%p (f=0x%06x an=0x%x pipe=%d tofwd=%d total=%lld)\n"