--- patches/connect.c.orig	2011-07-15 12:22:01.000000000 -0400
+++ connect.c	2011-07-15 12:24:14.000000000 -0400
@@ -1006,6 +1006,13 @@
 
   if(!rc && isconnected) {
     /* we are connected, awesome! */
+    if(data->set.timeout > 0) {
+        struct timeval tv;
+        tv.tv_sec = data->set.timeout;
+        tv.tv_usec = 0;
+        setsockopt( sockfd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof( tv ) );
+        setsockopt( sockfd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof( tv ) );
+    }
     *connected = TRUE; /* this is a true connect */
     infof(data, "connected\n");
     Curl_updateconninfo(conn, sockfd);
