]> granicus.if.org Git - python/commitdiff
BPO-17561: set create_server backlog default to None (GH-12735)
authorGiampaolo Rodola <g.rodola@gmail.com>
Tue, 9 Apr 2019 02:42:06 +0000 (04:42 +0200)
committerGitHub <noreply@github.com>
Tue, 9 Apr 2019 02:42:06 +0000 (04:42 +0200)
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
Lib/socket.py
Misc/NEWS.d/next/Library/2019-04-09-04-08-46.bpo-17561.hOhVnh.rst [new file with mode: 0644]

index b4a07bd5d5d2113edc15b5dc2067a94af7be5716..62c83470271c22982d53837046b5e5589d660139 100644 (file)
@@ -595,7 +595,7 @@ The following functions all create :ref:`socket objects <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.
index 2e51cd16f3ac18a99b97857a52cdf494b050a746..0dd8ec70e168aa33790be665ed9ea4617fb8e65b 100644 (file)
@@ -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 (file)
index 0000000..e281c22
--- /dev/null
@@ -0,0 +1 @@
+Set backlog=None as the default for socket.create_server.