diff --git a/Doc/lib/libftplib.tex b/Doc/lib/libftplib.tex
index bf87481..38b7bc8 100644
--- a/Doc/lib/libftplib.tex
+++ b/Doc/lib/libftplib.tex
@@ -104,13 +104,19 @@
 logging each line sent and received on the control connection.
 \end{methoddesc}
 
-\begin{methoddesc}{connect}{host\optional{, port}}
+\begin{methoddesc}{connect}{host\optional{, port\optional{, timeout}}}
 Connect to the given host and port.  The default port number is \code{21}, as
 specified by the FTP protocol specification.  It is rarely needed to
 specify a different port number.  This function should be called only
 once for each instance; it should not be called at all if a host was
 given when the instance was created.  All other methods can only be
 used after a connection has been made.
+
+The optional \var{timeout} parameter specifies a timeout in seconds for
+the connection attempt. If is not specified, or passed as None, the 
+object timeout is used (the timeout that you passed when instantiating the
+class); if the object timeout is also None, the global default timeout 
+setting will be used.
 \end{methoddesc}
 
 \begin{methoddesc}{getwelcome}{}
diff --git a/Lib/ftplib.py b/Lib/ftplib.py
index 22aff51..012671b 100644
--- a/Lib/ftplib.py
+++ b/Lib/ftplib.py
@@ -115,7 +115,7 @@
             if user: 
                 self.login(user, passwd, acct)
 
-    def connect(self, host='', port=0):
+    def connect(self, host='', port=0, timeout=None):
         '''Connect to host.  Arguments are:
          - host: hostname to connect to (string, default previous host)
          - port: port to connect to (integer, default previous port)
@@ -124,6 +124,8 @@
             self.host = host
         if port > 0:
             self.port = port
+        if timeout is not None:
+            self.timeout = timeout
         self.sock = socket.create_connection((self.host, self.port), self.timeout)
         self.af = self.sock.family
         self.file = self.sock.makefile('rb')
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()
