diff --git a/lib/connect.c b/lib/connect.c
index da0a5b9511f308f49e96ecfbc1e298a75e5af030..b34d5776ac61e9649c2ef9a8d68b9ae060cb7c74 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -81,6 +81,10 @@
 #include "memdebug.h"
 #endif
 
+/* The AIX 3.2.5 system headers define a function called geterrno() which
+   we won't need but that interferes with our function */
+#undef geterrno
+
 static
 int geterrno(void)
 {
@@ -409,6 +413,8 @@ CURLcode Curl_is_connected(struct connectdata *conn,
     if(err)
       return CURLE_COULDNT_CONNECT;
   }
+  else if(2 == rc)
+    return CURLE_COULDNT_CONNECT;
 
   /*
    * If the connection phase is "done" here, we should attempt to connect
@@ -558,6 +564,9 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* context */
         failf(data, "socket error: %d", err);
         /* we are _not_ connected, it was a false alert, continue please */
       }
+      else if(2 == rc)
+        /* waitconnect() returned error */
+        ;
       else if(data->state.used_interface == Curl_if_multi) {
         /* When running the multi interface, we bail out here */
         rc = 0;