]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-36123: Fix test_socket.testWithTimeoutTriggeredSend() race condition (GH-12053)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 26 Feb 2019 16:48:52 +0000 (08:48 -0800)
committerGitHub <noreply@github.com>
Tue, 26 Feb 2019 16:48:52 +0000 (08:48 -0800)
Use longer timeout for accept() in the server and block on accept in the client.
The client now only sets the timeout once the socket is connected.
(cherry picked from commit 53b9e1a1c1d86187ad6fbee492b697ef8be74205)

Co-authored-by: Joannah Nanjekye <33177550+nanjekyejoannah@users.noreply.github.com>
Lib/test/test_socket.py
Misc/NEWS.d/next/Tests/2019-02-26-12-51-35.bpo-36123.QRhhRS.rst [new file with mode: 0644]

index 82b89fcbafa60075437c96973a7e4cf7ba834e87..381965289615d5508d04c3c5c560f4aadeaf1350 100644 (file)
@@ -5533,7 +5533,7 @@ class SendfileUsingSendTest(ThreadedTCPSocketTest):
         support.unlink(support.TESTFN)
 
     def accept_conn(self):
-        self.serv.settimeout(self.TIMEOUT)
+        self.serv.settimeout(MAIN_TIMEOUT)
         conn, addr = self.serv.accept()
         conn.settimeout(self.TIMEOUT)
         self.addCleanup(conn.close)
@@ -5718,7 +5718,8 @@ class SendfileUsingSendTest(ThreadedTCPSocketTest):
     def _testWithTimeoutTriggeredSend(self):
         address = self.serv.getsockname()
         with open(support.TESTFN, 'rb') as file:
-            with socket.create_connection(address, timeout=0.01) as sock:
+            with socket.create_connection(address) as sock:
+                sock.settimeout(0.01)
                 meth = self.meth_from_sock(sock)
                 self.assertRaises(socket.timeout, meth, file)
 
diff --git a/Misc/NEWS.d/next/Tests/2019-02-26-12-51-35.bpo-36123.QRhhRS.rst b/Misc/NEWS.d/next/Tests/2019-02-26-12-51-35.bpo-36123.QRhhRS.rst
new file mode 100644 (file)
index 0000000..5a7e5bb
--- /dev/null
@@ -0,0 +1 @@
+Fix race condition in test_socket.
\ No newline at end of file