aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/uipc_socket.c
diff options
context:
space:
mode:
authorMaksim Yevmenkin <emax@FreeBSD.org>2013-10-31 20:33:21 +0000
committerMaksim Yevmenkin <emax@FreeBSD.org>2013-10-31 20:33:21 +0000
commitf7a3a2a57c4ee87369db84f9538ecc0c9dbfa6a6 (patch)
treee12c2e367e30f1879a772c96b5ac4907f6257d2b /sys/kern/uipc_socket.c
parentc1fd62d4c1d77140bd3c6c89a305e6403712f601 (diff)
Notes
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r--sys/kern/uipc_socket.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 66af1810513d..9b5e342eadba 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -486,6 +486,10 @@ SYSCTL_INT(_regression, OID_AUTO, sonewconn_earlytest, CTLFLAG_RW,
struct socket *
sonewconn(struct socket *head, int connstatus)
{
+ static struct timeval lastover;
+ static struct timeval overinterval = { 60, 0 };
+ static int overcount;
+
struct socket *so;
int over;
@@ -497,9 +501,17 @@ sonewconn(struct socket *head, int connstatus)
#else
if (over) {
#endif
- log(LOG_DEBUG, "%s: pcb %p: Listen queue overflow: "
- "%i already in queue awaiting acceptance\n",
- __func__, head->so_pcb, head->so_qlen);
+ overcount++;
+
+ if (ratecheck(&lastover, &overinterval)) {
+ log(LOG_DEBUG, "%s: pcb %p: Listen queue overflow: "
+ "%i already in queue awaiting acceptance "
+ "(%d occurrences)\n",
+ __func__, head->so_pcb, head->so_qlen, overcount);
+
+ overcount = 0;
+ }
+
return (NULL);
}
VNET_ASSERT(head->so_vnet != NULL, ("%s:%d so_vnet is NULL, head=%p",