Include port number in "Listen queue overflow" messages

hiren panchasara hiren.panchasara at gmail.com
Fri Mar 7 06:23:52 UTC 2014


I am thinking of committing following change that includes port number
in "Listen queue overflow" messages.

New message would look something like:
sonewconn: pcb 0xfffff8001b155760: Listen queue overflow on port
13120: 1 already in queue awaiting acceptance (454 occurrences)

I've recently ran into a situation at $work where I could not catch
the culprit application via "netstat -A" and had to dive into kgdb to
find the port from pcb where this application was listening to.

IMO, this change will make debugging easier.

cheers,
Hiren

Index: sys/kern/uipc_socket.c
===================================================================
--- sys/kern/uipc_socket.c      (revision 262861)
+++ sys/kern/uipc_socket.c      (working copy)
@@ -136,6 +136,7 @@
 #include <sys/jail.h>
 #include <sys/syslog.h>
 #include <netinet/in.h>
+#include <netinet/in_pcb.h>

 #include <net/vnet.h>

@@ -491,8 +492,11 @@
        static int overcount;

        struct socket *so;
+       struct inpcb *inp;
        int over;

+       inp = sotoinpcb(head);
+
        ACCEPT_LOCK();
        over = (head->so_qlen > 3 * head->so_qlimit / 2);
        ACCEPT_UNLOCK();
@@ -504,10 +508,12 @@
                overcount++;

                if (ratecheck(&lastover, &overinterval)) {
-                       log(LOG_DEBUG, "%s: pcb %p: Listen queue overflow: "
-                           "%i already in queue awaiting acceptance "
+                       log(LOG_DEBUG, "%s: pcb %p: Listen queue overflow on "
+                           "port %d: %i already in queue awaiting acceptance "
                            "(%d occurrences)\n",
-                           __func__, head->so_pcb, head->so_qlen, overcount);
+                           __func__, head->so_pcb,
+                           ntohs(inp->inp_inc.inc_lport), head->so_qlen,
+                           overcount);

                        overcount = 0;
                }


More information about the freebsd-net mailing list