aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2008-05-09 12:59:24 +0000
committerDaniel Stenberg <daniel@haxx.se>2008-05-09 12:59:24 +0000
commit0510759bc4902f6b15b476f9ae94403beb9a02cb (patch)
tree1640aa1fed0e04bae03adac52c5a8af4a5726cbd
parent6d5cca5ed02f256dc8ee612c7b34cfdff9b87189 (diff)
- 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.
-rw-r--r--CHANGES5
-rw-r--r--RELEASE-NOTES1
-rw-r--r--lib/multi.c6
3 files changed, 12 insertions, 0 deletions
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);
}