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.
This commit is contained in:
Daniel Stenberg 2006-09-11 20:50:58 +00:00
parent 00ae13f966
commit 7c5745720a
1 changed files with 5 additions and 2 deletions

View File

@ -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