From 8702b67dad62a9084f6c1823dce10653743667c8 Mon Sep 17 00:00:00 2001 From: Giampaolo Rodola Date: Tue, 9 Apr 2019 04:42:06 +0200 Subject: BPO-17561: set create_server backlog default to None (GH-12735) It turns out doing socket.listen(0) does not equal to "choose a reasonable default". It actually means "set backlog to 0". As such set backlog=None as the default for socket.create_server. Fixes the following BB failures: https://github.com/python/cpython/pull/11784#issuecomment-481036369 Ref. BPO-1756, GH-11784. --- Doc/library/socket.rst | 2 +- Lib/socket.py | 7 +++++-- Misc/NEWS.d/next/Library/2019-04-09-04-08-46.bpo-17561.hOhVnh.rst | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2019-04-09-04-08-46.bpo-17561.hOhVnh.rst diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index b4a07bd..62c8347 100644 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -595,7 +595,7 @@ The following functions all create :ref:`socket objects `. .. versionchanged:: 3.2 *source_address* was added. -.. function:: create_server(address, *, family=AF_INET, backlog=0, reuse_port=False, dualstack_ipv6=False) +.. function:: create_server(address, *, family=AF_INET, backlog=None, reuse_port=False, dualstack_ipv6=False) Convenience function which creates a TCP socket bound to *address* (a 2-tuple ``(host, port)``) and return the socket object. diff --git a/Lib/socket.py b/Lib/socket.py index 2e51cd1..0dd8ec7 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -745,7 +745,7 @@ def has_dualstack_ipv6(): return False -def create_server(address, *, family=AF_INET, backlog=0, reuse_port=False, +def create_server(address, *, family=AF_INET, backlog=None, reuse_port=False, dualstack_ipv6=False): """Convenience function which creates a SOCK_STREAM type socket bound to *address* (a 2-tuple (host, port)) and return the socket @@ -804,7 +804,10 @@ def create_server(address, *, family=AF_INET, backlog=0, reuse_port=False, msg = '%s (while attempting to bind on address %r)' % \ (err.strerror, address) raise error(err.errno, msg) from None - sock.listen(backlog) + if backlog is None: + sock.listen() + else: + sock.listen(backlog) return sock except error: sock.close() diff --git a/Misc/NEWS.d/next/Library/2019-04-09-04-08-46.bpo-17561.hOhVnh.rst b/Misc/NEWS.d/next/Library/2019-04-09-04-08-46.bpo-17561.hOhVnh.rst new file mode 100644 index 0000000..e281c22 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-04-09-04-08-46.bpo-17561.hOhVnh.rst @@ -0,0 +1 @@ +Set backlog=None as the default for socket.create_server. -- cgit v0.12