summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2006-01-25 08:39:35 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2006-01-25 08:39:35 (GMT)
commit08e301f8bda33203a89b2a450eb8104d815ff534 (patch)
tree3170124d170fa7fc3af74e398fe14aa417b21e5a /Lib/test
parent14361fffc233072acdc8973ac12fa79a38cac2b8 (diff)
downloadcpython-08e301f8bda33203a89b2a450eb8104d815ff534.zip
cpython-08e301f8bda33203a89b2a450eb8104d815ff534.tar.gz
cpython-08e301f8bda33203a89b2a450eb8104d815ff534.tar.bz2
There was a race condition where the connector would try to connect
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.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_socket_ssl.py3
1 files changed, 3 insertions, 0 deletions
diff --git a/Lib/test/test_socket_ssl.py b/Lib/test/test_socket_ssl.py
index 5db5ab1..98680b9 100644
--- a/Lib/test/test_socket_ssl.py
+++ b/Lib/test/test_socket_ssl.py
@@ -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()