From 797bc8504c0c1d718b088dca0622d920e3c6fcff Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 19 Nov 2008 10:15:19 +0000 Subject: - 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. --- lib/url.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib') 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 && -- cgit v1.2.3