diff options
-rw-r--r-- | lib/libc/sys/listen.2 | 22 | ||||
-rw-r--r-- | sys/kern/uipc_socket.c | 8 |
2 files changed, 25 insertions, 5 deletions
diff --git a/lib/libc/sys/listen.2 b/lib/libc/sys/listen.2 index bd6abde..e09d1ca 100644 --- a/lib/libc/sys/listen.2 +++ b/lib/libc/sys/listen.2 @@ -28,7 +28,7 @@ .\" From: @(#)listen.2 8.2 (Berkeley) 12/11/93 .\" $FreeBSD$ .\" -.Dd August 29, 2005 +.Dd October 20, 2012 .Dt LISTEN 2 .Os .Sh NAME @@ -102,15 +102,15 @@ of service attacks are no longer necessary. The .Xr sysctl 3 MIB variable -.Va kern.ipc.somaxconn +.Va kern.ipc.soacceptqueue specifies a hard limit on .Fa backlog ; if a value greater than -.Va kern.ipc.somaxconn +.Va kern.ipc.soacceptqueue or less than zero is specified, .Fa backlog is silently forced to -.Va kern.ipc.somaxconn . +.Va kern.ipc.soacceptqueue . .Sh INTERACTION WITH ACCEPT FILTERS When accept filtering is used on a socket, a second queue will be used to hold sockets that have connected, but have not yet @@ -168,3 +168,17 @@ at run-time, and to use a negative .Fa backlog to request the maximum allowable value, was introduced in .Fx 2.2 . +The +.Va kern.ipc.somaxconn +.Xr sysctl 3 +has been replaced with +.Va kern.ipc.soacceptqueue +in +.Fx 10.0 +to prevent confusion its actual functionality. +The original +.Xr sysctl 3 +.Va kern.ipc.somaxconn +is still available but hidden from a +.Xr sysctl 3 +-a output so that existing applications and scripts continue to work. diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c index 6b5581f..a964cf2 100644 --- a/sys/kern/uipc_socket.c +++ b/sys/kern/uipc_socket.c @@ -185,6 +185,8 @@ MALLOC_DEFINE(M_PCB, "pcb", "protocol control block"); /* * Limit on the number of connections in the listen queue waiting * for accept(2). + * NB: The orginal sysctl somaxconn is still available but hidden + * to prevent confusion about the actually purpose of this number. */ static int somaxconn = SOMAXCONN; @@ -205,9 +207,13 @@ sysctl_somaxconn(SYSCTL_HANDLER_ARGS) somaxconn = val; return (0); } -SYSCTL_PROC(_kern_ipc, KIPC_SOMAXCONN, somaxconn, CTLTYPE_UINT | CTLFLAG_RW, +SYSCTL_PROC(_kern_ipc, OID_AUTO, soacceptqueue, CTLTYPE_UINT | CTLFLAG_RW, 0, sizeof(int), sysctl_somaxconn, "I", "Maximum listen socket pending connection accept queue size"); +SYSCTL_PROC(_kern_ipc, KIPC_SOMAXCONN, somaxconn, + CTLTYPE_UINT | CTLFLAG_RW | CTLFLAG_SKIP, + 0, sizeof(int), sysctl_somaxconn, "I", + "Maximum listen socket pending connection accept queue size (compat)"); static int numopensockets; SYSCTL_INT(_kern_ipc, OID_AUTO, numopensockets, CTLFLAG_RD, |