- David James brought a patch that make libcurl close (all) dead connections

whenever you attempt to open a new connection.
This commit is contained in:
Daniel Stenberg
2009-03-03 11:01:24 +00:00
parent e84dbd28db
commit ee73fc361b
3 changed files with 30 additions and 18 deletions

View File

@@ -2565,6 +2565,22 @@ ConnectionExists(struct SessionHandle *data,
from the multi */
}
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;
infof(data, "Connection #%d seems to be dead!\n", i);
Curl_disconnect(check); /* disconnect resources */
data->state.connc->connects[i]=NULL; /* nothing here */
continue;
}
}
if(canPipeline) {
/* Make sure the pipe has only GET requests */
struct SessionHandle* sh = gethandleathead(check->send_pipe);
@@ -2688,22 +2704,6 @@ ConnectionExists(struct SessionHandle *data,
}
if(match) {
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;
infof(data, "Connection #%d seems to be dead!\n", i);
Curl_disconnect(check); /* disconnect resources */
data->state.connc->connects[i]=NULL; /* nothing here */
return FALSE;
}
}
check->inuse = TRUE; /* mark this as being in use so that no other
handle in a multi stack may nick it */