Fix non-blocking connect() for Windows. Refactored the code
that retries the connect() call in timeout mode so it can be shared
between connect() and connect_ex(), and needs only a single #ifdef.
The test for this was doing funky stuff I don't approve of,
so I removed it in favor of a simpler test. This allowed me
to implement a simpler, "purer" form of the timeout retry code.
Hopefully that's enough (if you want to be fancy, use non-blocking
mode and decode the errors yourself, like before).
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 485e038..a2db64a 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -416,18 +416,8 @@
conn, addr = self.serv.accept()
def _testConnect(self):
- self.cli.setblocking(0)
- try:
- self.cli.connect((HOST, PORT))
- except socket.error:
- pass
- else:
- self.fail("Error trying to do non-blocking connect.")
- read, write, err = select.select([self.cli], [], [])
- if self.cli in read:
- self.cli.connect((HOST, PORT))
- else:
- self.fail("Error trying to do connect after select.")
+ self.cli.settimeout(10)
+ self.cli.connect((HOST, PORT))
def testRecv(self):
"""Testing non-blocking recv."""