mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-03 18:09:25 +00:00
MINOR: cli/show_fd: report some easily detectable suspicious states
A file descriptor which maps to a connection but has more than one thread in its mask, or an FD handle that doesn't correspond to the FD, or wiht no mux context, or an FD with no thread in its mask, or with more than 1 million events is flagged as suspicious.
This commit is contained in:
parent
8050efeacb
commit
dacfde4ba4
17
src/cli.c
17
src/cli.c
@ -1061,10 +1061,17 @@ static int cli_io_handler_show_fd(struct appctx *appctx)
|
||||
sv = objt_server(conn->target);
|
||||
px = objt_proxy(conn->target);
|
||||
is_back = conn_is_back(conn);
|
||||
if (atleast2(fdt.thread_mask))
|
||||
suspicious = 1;
|
||||
if (conn->handle.fd != fd)
|
||||
suspicious = 1;
|
||||
}
|
||||
else if (fdt.iocb == sock_accept_iocb)
|
||||
li = fdt.owner;
|
||||
|
||||
if (!fdt.thread_mask)
|
||||
suspicious = 1;
|
||||
|
||||
chunk_printf(&trash,
|
||||
" %5d : st=0x%02x(R:%c%c W:%c%c) ev=0x%02x(%c%c%c%c%c) [%c%c] tmask=0x%lx umask=0x%lx owner=%p iocb=%p(",
|
||||
fd,
|
||||
@ -1091,6 +1098,12 @@ static int cli_io_handler_show_fd(struct appctx *appctx)
|
||||
}
|
||||
else if (fdt.iocb == sock_conn_iocb) {
|
||||
chunk_appendf(&trash, ") back=%d cflg=0x%08x", is_back, conn_flags);
|
||||
|
||||
if (conn->handle.fd != fd) {
|
||||
chunk_appendf(&trash, " fd=%d(BOGUS)", conn->handle.fd);
|
||||
suspicious = 1;
|
||||
}
|
||||
|
||||
if (px)
|
||||
chunk_appendf(&trash, " px=%s", px->id);
|
||||
else if (sv)
|
||||
@ -1100,6 +1113,8 @@ static int cli_io_handler_show_fd(struct appctx *appctx)
|
||||
|
||||
if (mux) {
|
||||
chunk_appendf(&trash, " mux=%s ctx=%p", mux->name, ctx);
|
||||
if (!ctx)
|
||||
suspicious = 1;
|
||||
if (mux->show_fd)
|
||||
suspicious |= mux->show_fd(&trash, fdt.owner);
|
||||
}
|
||||
@ -1124,6 +1139,8 @@ static int cli_io_handler_show_fd(struct appctx *appctx)
|
||||
|
||||
#ifdef DEBUG_FD
|
||||
chunk_appendf(&trash, " evcnt=%u", fdtab[fd].event_count);
|
||||
if (fdtab[fd].event_count >= 1000000)
|
||||
suspicious = 1;
|
||||
#endif
|
||||
chunk_appendf(&trash, "%s\n", suspicious ? " !" : "");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user