From d9dbf493837b798757ed68dbd97dd55cd0c6efa5 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Sat, 24 Oct 2015 20:06:04 -0700 Subject: accepted sockets shouldn't inherit the SOCK_NONBLOCK flag (closes #25471) --- Lib/socket.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'Lib/socket.py') diff --git a/Lib/socket.py b/Lib/socket.py index 004588671c..ff2f087678 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -185,7 +185,11 @@ class socket(_socket.socket): For IP sockets, the address info is a pair (hostaddr, port). """ fd, addr = self._accept() - sock = socket(self.family, self.type, self.proto, fileno=fd) + # If our type has the SOCK_NONBLOCK flag, we shouldn't pass it onto the + # new socket. We do not currently allow passing SOCK_NONBLOCK to + # accept4, so the returned socket is always blocking. + type = self.type & ~globals().get("SOCK_NONBLOCK", 0) + sock = socket(self.family, type, self.proto, fileno=fd) # Issue #7995: if no default timeout is set and the listening # socket had a (non-zero) timeout, force the new socket in blocking # mode to override platform-specific socket flags inheritance. -- cgit v1.2.1