I have a first shot at a patch now. I need to run more tests before submitting it, but would appreciate if you could try it out too.

diff --git a/lib/connect.c b/lib/connect.c
index 4b6ee00..97a0655 100644
--- a/lib/connect.c
+++ b/lib/connect.c
@@ -1104,13 +1104,12 @@ CURLcode Curl_connecthost(struct connectdata *conn,  /* 
     conn->tempaddr[0]->ai_next == NULL ? timeout_ms : timeout_ms / 2;

   /* start connecting to first IP */
-  res = singleipconnect(conn, conn->tempaddr[0], &(conn->tempsock[0]));
-  while(res != CURLE_OK &&
-        conn->tempaddr[0] &&
-        conn->tempaddr[0]->ai_next &&
-        conn->tempsock[0] == CURL_SOCKET_BAD)
-    res = trynextip(conn, FIRSTSOCKET, 0);
-
+  while(conn->tempaddr[0]) {
+    res = singleipconnect(conn, conn->tempaddr[0], &(conn->tempsock[0]));
+    if(res == CURLE_OK)
+        break;
+    conn->tempaddr[0] = conn->tempaddr[0]->ai_next;
+  }
   if(conn->tempsock[0] == CURL_SOCKET_BAD)
     return res;