aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2008-11-19 10:15:19 +0000
committerDaniel Stenberg <daniel@haxx.se>2008-11-19 10:15:19 +0000
commit797bc8504c0c1d718b088dca0622d920e3c6fcff (patch)
treeb23caa3b0da0cba82d51a1a188d0552133dccc67 /lib
parent305f4d92ef4b25a3139112592fef31256ca3abd8 (diff)
- Andreas Wurf and Markus Koetter helped me analyze a problem that Andreas got
when uploading files to a single FTP server using multiple easy handle handles with the multi interface. Occasionally a handle would stall in mysterious ways. The problem turned out to be a side-effect of the ConnectionExists() function's eagerness to re-use a handle for HTTP pipelining so it would select it even if already being in use, due to an inadequate check for its chances of being used for pipelnining.
Diffstat (limited to 'lib')
-rw-r--r--lib/url.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/url.c b/lib/url.c
index 75f9e099d..6bb3e3ee7 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -2509,6 +2509,11 @@ ConnectionExists(struct SessionHandle *data,
/* don't do mixed proxy and non-proxy connections */
continue;
+ if(!canPipeline && check->inuse)
+ /* this request can't be pipelined but the checked connection is already
+ in use so we skip it */
+ continue;
+
if(!needle->bits.httpproxy || needle->protocol&PROT_SSL ||
(needle->bits.httpproxy && check->bits.httpproxy &&
needle->bits.tunnel_proxy && check->bits.tunnel_proxy &&