- Stefan Krause reported a busy-looping case when using the multi interface
authorDaniel Stenberg <daniel@haxx.se>
Fri, 9 May 2008 12:59:24 +0000 (12:59 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 9 May 2008 12:59:24 +0000 (12:59 +0000)
  and doing CONNECT to a proxy. The app would then busy-loop until the proxy
  completed its response.

CHANGES
RELEASE-NOTES
lib/multi.c

diff --git a/CHANGES b/CHANGES
index 52b50a8..d0e41a5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,11 @@
                                   Changelog
 
 
+Daniel Stenberg (9 May 2008)
+- Stefan Krause reported a busy-looping case when using the multi interface
+  and doing CONNECT to a proxy. The app would then busy-loop until the proxy
+  completed its response.
+
 Michal Marek (9 May 2008)
 - Make Curl_write and it's callees accept a const pointer, in preparation
   of tetetest's patch for curl_easy_send()
index f2565fa..1e85e25 100644 (file)
@@ -32,6 +32,7 @@ This release includes the following bugfixes:
  o configure detecting debug-enabled c-ares
  o microsecond resolution keys for internal splay trees
  o krb4 and krb5 ftp segfault
+ o multi interface busy loop for CONNECT requests
 
 This release includes the following known bugs:
 
index 48e7c41..1034180 100644 (file)
@@ -722,6 +722,12 @@ static int waitconnect_getsock(struct connectdata *conn,
     return GETSOCK_BLANK;
 
   sock[0] = conn->sock[FIRSTSOCKET];
+
+  /* when we've sent a CONNECT to a proxy, we should rather wait for the
+     socket to become readable to be able to get the response headers */
+  if(conn->bits.tunnel_connecting)
+    return GETSOCK_READSOCK(0);
+
   return GETSOCK_WRITESOCK(0);
 }