diff --git a/Lib/test/test_socket_ssl.py b/Lib/test/test_socket_ssl.py
index 0e31904..1091383 100644
--- a/Lib/test/test_socket_ssl.py
+++ b/Lib/test/test_socket_ssl.py
@@ -14,6 +14,9 @@
 
     import urllib
 
+    if test_support.verbose:
+        print "test_basic ..."
+
     socket.RAND_status()
     try:
         socket.RAND_egd(1)
@@ -27,28 +30,41 @@
     buf = f.read()
     f.close()
 
-# XXX Tim disabled this test on all platforms, for now, since the
-# XXX s.connect(("gmail.org", 995))
-# XXX line starting timing out on all the builbot slaves.
-if 0: #not sys.platform.startswith('win'):
-    def test_timeout():
-        test_support.requires('network')
+def test_timeout():
+    test_support.requires('network')
 
-        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        s.settimeout(30.0)
-        # connect to service which issues an welcome banner (without need to
-        # write anything)
-        s.connect(("gmail.org", 995))
-        ss = socket.ssl(s)
-        # read part of return welcome banner twice
-        ss.read(1)
-        ss.read(1)
-        s.close()
-else:
-    def test_timeout():
-        pass
+    if test_support.verbose:
+        print "test_timeout ..."
+
+    # A service which issues a welcome banner (without need to write
+    # anything).
+    # XXX ("gmail.org", 995) has been unreliable so far, from time to time
+    # XXX non-responsive for hours on end (& across all buildbot slaves,
+    # XXX so that's not just a local thing).
+    ADDR = "gmail.org", 995
+
+    s = socket.socket()
+    s.settimeout(30.0)
+    try:
+        s.connect(ADDR)
+    except socket.timeout:
+        print >> sys.stderr, """\
+    WARNING:  an attempt to connect to %r timed out, in
+    test_timeout.  That may be legitimate, but is not the outcome we hoped
+    for.  If this message is seen often, test_timeout should be changed to
+    use a more reliable address.""" % (ADDR,)
+        return
+
+    ss = socket.ssl(s)
+    # Read part of return welcome banner twice.
+    ss.read(1)
+    ss.read(1)
+    s.close()
 
 def test_rude_shutdown():
+    if test_support.verbose:
+        print "test_rude_shutdown ..."
+
     try:
         import threading
     except ImportError:
