diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
index 8cf7886..0c38876 100644
--- a/Lib/test/test_ftplib.py
+++ b/Lib/test/test_ftplib.py
@@ -8,14 +8,20 @@
 
 def server(evt):
     serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    serv.settimeout(3)
     serv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     serv.bind(("", 9091))
     serv.listen(5)
-    conn, addr = serv.accept()
-    conn.send("1 Hola mundo\n")
-    conn.close()
-    serv.close()
-    evt.set()
+    try:
+        conn, addr = serv.accept()
+    except socket.timeout:
+        pass
+    else:
+        conn.send("1 Hola mundo\n")
+        conn.close()
+    finally:
+        serv.close()
+        evt.set()
 
 class GeneralTests(TestCase):
     
@@ -48,6 +54,25 @@
         self.assertEqual(ftp.sock.gettimeout(), 30)
         ftp.sock.close()
 
+    def testTimeoutConnect(self):
+        ftp = ftplib.FTP()
+        ftp.connect("localhost", timeout=30)
+        self.assertEqual(ftp.sock.gettimeout(), 30)
+        ftp.sock.close()
+
+    def testTimeoutDifferentOrder(self):
+        ftp = ftplib.FTP(timeout=30)
+        ftp.connect("localhost")
+        self.assertEqual(ftp.sock.gettimeout(), 30)
+        ftp.sock.close()
+
+    def testTimeoutDirectAccess(self):
+        ftp = ftplib.FTP()
+        ftp.timeout = 30
+        ftp.connect("localhost")
+        self.assertEqual(ftp.sock.gettimeout(), 30)
+        ftp.sock.close()
+
     def testTimeoutNone(self):
         # None, having other default
         previous = socket.getdefaulttimeout()
