From 7c5745720aca27f38dc875a39d43cc3aba189471 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 11 Sep 2006 20:50:58 +0000 Subject: [PATCH] If the current connection doesn't fit to get added to the connection cache, we certainly MUST NOT kill an active connection... Problem tracked down thanks to Michael Wallner's excellent test program. --- lib/url.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/url.c b/lib/url.c index 14def325a..e014c8ee4 100644 --- a/lib/url.c +++ b/lib/url.c @@ -2002,7 +2002,7 @@ ConnectionKillOne(struct SessionHandle *data) for(i=0; data->state.connc && (i< data->state.connc->num); i++) { conn = data->state.connc->connects[i]; - if(!conn) + if(!conn || conn->inuse) continue; /* @@ -2078,7 +2078,10 @@ ConnectionStore(struct SessionHandle *data, if(i == data->state.connc->num) { /* there was no room available, kill one */ i = ConnectionKillOne(data); - infof(data, "Connection (#%d) was killed to make room\n", i); + if(-1 != i) + infof(data, "Connection (#%d) was killed to make room\n", i); + else + infof(data, "This connection did not fit in the connection cache\n"); } conn->connectindex = i; /* Make the child know where the pointer to this