diff --git a/CHANGES b/CHANGES index aa69979515e5f1fc686858be2f067e36c80d14a8..1d137577c55b088f9cc4116e9ecbe2b652993e71 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,12 @@ Changelog +Daniel Stenberg (19 Jun 2008) +- Dengminwen found a bug in the connection re-use function when using the + multi interface with pipelining enabled as it would wrongly check for, + detect and close "dead connections" even though that connection was already + in use! + Daniel Fandrich (18 Jun 2008) - Added SSH failure test cases 628-632 diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 50ea7ad7b2262d817ed5faa9682a22f6a05bc959..3201397e2a452f7bfd351450b1543a8f84ec4bd0 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -20,6 +20,7 @@ This release includes the following bugfixes: o Fixed curl-config --ca o Fixed the multi interface connection re-use with NSS-built libcurl + o connection re-use when using the multi interface with pipelining enabled This release includes the following known bugs: @@ -37,6 +38,6 @@ This release would not have looked like this without help, code, reports and advice from friends like these: Lenny Rachitsky, Axel Tillequin, Arnaud Ebalard, Yang Tse, Dan Fandrich, - Rob Crittenden + Rob Crittenden, Dengminwen Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/url.c b/lib/url.c index a7f1a0c1a8cf4dc7a13ff095b684c42d1f32cca3..6391edb284e50b7b22c8581a1b42391023bc1d0d 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2511,9 +2511,10 @@ ConnectionExists(struct SessionHandle *data, } if(match) { - if(pipeLen == 0) { - /* The check for a dead socket makes sense only if there - are no handles in pipeline */ + if(!pipeLen && !check->inuse) { + /* The check for a dead socket makes sense only if there are no + handles in pipeline and the connection isn't already marked in + use */ bool dead = SocketIsDead(check->sock[FIRSTSOCKET]); if(dead) { check->data = data;