[Python-Dev] Other SSL issues in the tracker have been marked

Bill Janssen janssen at parc.com
Mon Aug 27 00:13:57 CEST 2007


Well, as long as you have your ears on, here's another patch to test_ssl.

1)  Fixes the bug that two class names are initial-lower-case.

2)  Replaces the poll waiting for the server to become ready with
    a threading.Event signal.

Bill

Index: Lib/test/test_ssl.py
===================================================================
--- Lib/test/test_ssl.py	(revision 57521)
+++ Lib/test/test_ssl.py	(working copy)
@@ -153,9 +153,9 @@
                 c2.close()
 
 
-class threadedEchoServer(threading.Thread):
+class ThreadedEchoServer(threading.Thread):
 
-    class connectionHandler(threading.Thread):
+    class ConnectionHandler(threading.Thread):
 
         def __init__(self, server, connsock):
             self.server = server
@@ -219,6 +219,7 @@
         self.certreqs = certreqs
         self.cacerts = cacerts
         self.sock = socket.socket()
+        self.flag = None
         if hasattr(socket, 'SO_REUSEADDR'):
             self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
         if hasattr(socket, 'SO_REUSEPORT'):
@@ -228,15 +229,22 @@
         threading.Thread.__init__(self)
         self.setDaemon(False)
 
+    def start (self, flag=None):
+        self.flag = flag
+        threading.Thread.start(self)
+
     def run (self):
         self.sock.settimeout(0.5)
         self.sock.listen(5)
         self.active = True
+        if self.flag:
+            # signal an event
+            self.flag.set()
         while self.active:
             try:
                 newconn, connaddr = self.sock.accept()
                 #sys.stdout.write('\nserver:  new connection from ' + str(connaddr) + '\n')
-                handler = self.connectionHandler(self, newconn)
+                handler = self.ConnectionHandler(self, newconn)
                 handler.start()
             except socket.timeout:
                 pass
@@ -337,9 +345,11 @@
 
     server = None
     if test_support.is_resource_enabled('network'):
-        server = threadedEchoServer(10024, CERTFILE)
-        server.start()
-        time.sleep(1)
+        server = ThreadedEchoServer(10024, CERTFILE)
+        flag = threading.Event()
+        server.start(flag)
+        # wait for it to start
+        flag.wait()
         tests.append(ConnectedTests)
 
     thread_info = test_support.threading_setup()


More information about the Python-Dev mailing list