diff --git a/CHANGES b/CHANGES index 52b50a8eb..d0e41a5d4 100644 --- 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() diff --git a/RELEASE-NOTES b/RELEASE-NOTES index f2565fae2..1e85e25fc 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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: diff --git a/lib/multi.c b/lib/multi.c index 48e7c410a..10341808f 100644 --- a/lib/multi.c +++ b/lib/multi.c @@ -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); }