changeset: 98854:7577960ea17b branch: 3.5 parent: 98851:67dfa5cf38c2 parent: 98853:10e044a734f3 user: Benjamin Peterson date: Sat Oct 24 20:07:08 2015 -0700 files: Lib/socket.py Lib/test/test_socket.py Misc/NEWS description: merge 3.4 (#25471) diff -r 67dfa5cf38c2 -r 7577960ea17b Lib/socket.py --- a/Lib/socket.py Sat Oct 24 17:42:44 2015 +0300 +++ b/Lib/socket.py Sat Oct 24 20:07:08 2015 -0700 @@ -193,7 +193,11 @@ 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. diff -r 67dfa5cf38c2 -r 7577960ea17b Lib/test/test_socket.py --- a/Lib/test/test_socket.py Sat Oct 24 17:42:44 2015 +0300 +++ b/Lib/test/test_socket.py Sat Oct 24 20:07:08 2015 -0700 @@ -3866,6 +3866,7 @@ read, write, err = select.select([self.serv], [], []) if self.serv in read: conn, addr = self.serv.accept() + self.assertIsNone(conn.gettimeout()) conn.close() else: self.fail("Error trying to do accept after select.") diff -r 67dfa5cf38c2 -r 7577960ea17b Misc/NEWS --- a/Misc/NEWS Sat Oct 24 17:42:44 2015 +0300 +++ b/Misc/NEWS Sat Oct 24 20:07:08 2015 -0700 @@ -189,6 +189,9 @@ - Issue #24881: Fixed setting binary mode in Python implementation of FileIO on Windows and Cygwin. Patch from Akira Li. +- Issue #25471: Sockets returned from accept() shouldn't appear to be + nonblocking. + - Issue #25319: When threading.Event is reinitialized, the underlying condition should use a regular lock rather than a recursive lock.