listen(): improve POSIX compliance
Ensure that a negative backlog argument is handled as it if was 0. Reviewed by: markj@, glebius@ Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D31821
This commit is contained in:
parent
d88131e1e5
commit
76e6e4d72f
@ -28,7 +28,7 @@
|
||||
.\" From: @(#)listen.2 8.2 (Berkeley) 12/11/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd April 14, 2020
|
||||
.Dd October 11, 2022
|
||||
.Dt LISTEN 2
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -106,10 +106,13 @@ specifies a hard limit on
|
||||
.Fa backlog ;
|
||||
if a value greater than
|
||||
.Va kern.ipc.soacceptqueue
|
||||
or less than zero is specified,
|
||||
is specified,
|
||||
.Fa backlog
|
||||
is silently forced to
|
||||
.Va kern.ipc.soacceptqueue .
|
||||
If a negative value is used,
|
||||
.Fa backlog
|
||||
is silently forced to 0.
|
||||
.Pp
|
||||
If the listen queue overflows, the kernel will emit a LOG_DEBUG syslog message.
|
||||
The
|
||||
@ -191,3 +194,8 @@ The original
|
||||
is still available but hidden from a
|
||||
.Xr sysctl 3
|
||||
-a output so that existing applications and scripts continue to work.
|
||||
To improve POSIX compliance, a negative
|
||||
.Fa backlog
|
||||
argument is handled the same as 0.
|
||||
This was introduced in
|
||||
.Fx 14.0 .
|
||||
|
@ -1075,7 +1075,9 @@ solisten_proto(struct socket *so, int backlog)
|
||||
so->so_options |= SO_ACCEPTCONN;
|
||||
|
||||
listening:
|
||||
if (backlog < 0 || backlog > somaxconn)
|
||||
if (backlog < 0)
|
||||
backlog = 0;
|
||||
if (backlog > somaxconn)
|
||||
backlog = somaxconn;
|
||||
so->sol_qlimit = backlog;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user