Issue #7207:  Fix race condition in telnetlib test;  should stop test failures on OS X 10.6.
diff --git a/Lib/test/test_telnetlib.py b/Lib/test/test_telnetlib.py
index 742bc4b..79eebf9 100644
--- a/Lib/test/test_telnetlib.py
+++ b/Lib/test/test_telnetlib.py
@@ -12,12 +12,14 @@
 HOST = support.HOST
 EOF_sigil = object()
 
-def server(evt, serv, dataq=None):
-    """ Open a tcp server in three steps
+def server(evt, serv, dataq=None, test_done=None):
+    """ Open a tcp server in four steps
         1) set evt to true to let the parent know we are ready
         2) [optional] if is not False, write the list of data from dataq.get()
            to the socket.
-        3) set evt to true to let the parent know we're done
+        3) [optional] if test_done is not None, it's an event;  wait
+           for parent to set test_done before closing connection
+        4) set evt to true to let the parent know we're done
     """
     serv.listen(5)
     evt.set()
@@ -39,6 +41,8 @@
     except socket.timeout:
         pass
     finally:
+        if test_done is not None:
+            test_done.wait()
         serv.close()
         evt.set()
 
@@ -324,8 +328,24 @@
 class WriteTests(TestCase):
     '''The only thing that write does is replace each tl.IAC for
     tl.IAC+tl.IAC'''
-    setUp = _read_setUp
-    tearDown = _read_tearDown
+    def setUp(self):
+        self.evt = threading.Event()
+        self.test_done = threading.Event()
+        self.dataq = queue.Queue()
+        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+        self.sock.settimeout(3)
+        self.port = support.bind_port(self.sock)
+        self.thread = threading.Thread(target=server, args=(
+                self.evt, self.sock, self.dataq, self.test_done))
+        self.thread.start()
+        self.evt.wait()
+        self.evt.clear()
+        time.sleep(.1)
+
+    def tearDown(self):
+        self.test_done.set()
+        self.evt.wait()
+        self.thread.join()
 
     def _test_write(self, data):
         self.telnet.sock._raw_sent = b''