]> granicus.if.org Git - python/commitdiff
There was a race condition where the connector would try to connect
authorNeal Norwitz <nnorwitz@gmail.com>
Wed, 25 Jan 2006 08:39:35 +0000 (08:39 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Wed, 25 Jan 2006 08:39:35 +0000 (08:39 +0000)
before the listener was ready (on gentoo x86 buildslave).  This
caused the listener to not exit normally since nobody connected to it
(waited in accept()).  The exception was raised in the other thread
and the test failed.

This fix doesn't completely eliminate the race, but should make it
near impossible to trigger.  Hopefully it's good enough.

Lib/test/test_socket_ssl.py

index 5db5ab178e5d31c9370e1c872fd63db236aa6b05..98680b92360275cb68bf2856005bc626fa9720a9 100644 (file)
@@ -35,6 +35,7 @@ def test_rude_shutdown():
     # Some random port to connect to.
     PORT = 9934
 
+    listener_ready = threading.Event()
     listener_gone = threading.Event()
 
     # `listener` runs in a thread.  It opens a socket listening on PORT, and
@@ -45,11 +46,13 @@ def test_rude_shutdown():
         s = socket.socket()
         s.bind(('', PORT))
         s.listen(5)
+        listener_ready.set()
         s.accept()
         s = None # reclaim the socket object, which also closes it
         listener_gone.set()
 
     def connector():
+        listener_ready.wait()
         s = socket.socket()
         s.connect(('localhost', PORT))
         listener_gone.wait()