1 .\" Copyright (c) 1983, 1991, 1993
2 .\" The Regents of the University of California. All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\" notice, this list of conditions and the following disclaimer in the
11 .\" documentation and/or other materials provided with the distribution.
12 .\" 3. Neither the name of the University nor the names of its contributors
13 .\" may be used to endorse or promote products derived from this software
14 .\" without specific prior written permission.
16 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 .Nd listen for connections on a socket
39 .Fn listen "int s" "int backlog"
41 To accept connections, a socket
44 a willingness to accept incoming connections and
45 a queue limit for incoming connections are specified with
47 and then the connections are
52 system call applies only to sockets of type
59 argument defines the maximum length the queue of
60 pending connections may grow to.
61 The real maximum queue length will be 1.5 times more than the value
67 system call on the listening socket allows the caller to change the maximum
68 queue length using a new
72 request arrives with the queue full the client may
73 receive an error with an indication of
75 or, in the case of TCP, the connection will be
78 Current queue lengths of listening sockets can be queried using
84 and the introduction of the syncache,
87 argument also determined the length of the incomplete
88 connection queue, which held TCP sockets in the process
89 of completing TCP's 3-way handshake.
90 These incomplete connections
91 are now held entirely in the syncache, which is unaffected by
95 values to help handle denial
96 of service attacks are no longer necessary.
101 .Va kern.ipc.soacceptqueue
102 specifies a hard limit on
104 if a value greater than
105 .Va kern.ipc.soacceptqueue
106 or less than zero is specified,
108 is silently forced to
109 .Va kern.ipc.soacceptqueue .
111 If the listen queue overflows, the kernel will emit a syslog message
112 using default priority LOG_DEBUG (7).
116 .Va kern.ipc.sooverprio
117 may be used to change this priority to any value in a range of 0..7
118 (LOG_EMERG..LOG_DEBUG).
122 It may be set to -1 to disable these messages.
125 .Va kern.ipc.sooverinterval
126 specifies a per-socket limit on how often the kernel will emit these messages.
127 .Sh INTERACTION WITH ACCEPT FILTERS
128 When accept filtering is used on a socket, a second queue will
129 be used to hold sockets that have connected, but have not yet
130 met their accept filtering criteria.
131 Once the criteria has been
132 met, these sockets will be moved over into the completed connection
135 If this secondary queue is full and a
136 new connection comes in, the oldest socket which has not yet met
137 its accept filter criteria will be terminated.
139 This secondary queue, like the primary listen queue, is sized
154 is not a valid descriptor.
155 .It Bq Er EDESTADDRREQ
156 The socket is not bound to a local address, and the protocol does not
157 support listening on an unbound socket.
159 The socket is already connected, or in the process of being connected.
165 The socket is not of a type that supports the operation
180 system call appeared in
182 The ability to configure the maximum
184 at run-time, and to use a negative
186 to request the maximum allowable value, was introduced in
189 .Va kern.ipc.somaxconn
191 has been replaced with
192 .Va kern.ipc.soacceptqueue
195 to prevent confusion about its actual functionality.
198 .Va kern.ipc.somaxconn
199 is still available but hidden from a
201 -a output so that existing applications and scripts continue to work.