summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2011-05-10 17:16:29 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2011-05-10 17:16:29 (GMT)
commit1be815aac49bc0dc3937eb3a618fc9f1a6deb51a (patch)
tree53a031df40dc4b8cebfb5b5fe586ffdecd78c392 /Modules
parentcda41d3bf74f97f8956eb9018bdc02c693b65282 (diff)
downloadcpython-1be815aac49bc0dc3937eb3a618fc9f1a6deb51a.zip
cpython-1be815aac49bc0dc3937eb3a618fc9f1a6deb51a.tar.gz
cpython-1be815aac49bc0dc3937eb3a618fc9f1a6deb51a.tar.bz2
Issue #8498: In socket.accept(), allow to specify 0 as a backlog value in
order to accept exactly one connection. Patch by Daniel Evers.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/socketmodule.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index e2fdb5e..bc11b23 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -2220,8 +2220,10 @@ sock_listen(PySocketSockObject *s, PyObject *arg)
if (backlog == -1 && PyErr_Occurred())
return NULL;
Py_BEGIN_ALLOW_THREADS
- if (backlog < 1)
- backlog = 1;
+ /* To avoid problems on systems that don't allow a negative backlog
+ * (which doesn't make sense anyway) we force a minimum value of 0. */
+ if (backlog < 0)
+ backlog = 0;
res = listen(s->sock_fd, backlog);
Py_END_ALLOW_THREADS
if (res < 0)
@@ -2234,8 +2236,9 @@ PyDoc_STRVAR(listen_doc,
"listen(backlog)\n\
\n\
Enable a server to accept connections. The backlog argument must be at\n\
-least 1; it specifies the number of unaccepted connection that the system\n\
-will allow before refusing new connections.");
+least 0 (if it is lower, it is set to 0); it specifies the number of\n\
+unaccepted connections that the system will allow before refusing new\n\
+connections.");
/*