diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-01-11 23:43:38 +0100 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-01-13 17:09:14 +0100 |
commit | 54b201b48c90a2fb03c2baf90837c6b63adbc344 (patch) | |
tree | 8fbca555cca20c416efdc4331520cac7f98c3511 /lib | |
parent | cf8c70594fda8aaba1b2b1d1e34deefe927434f9 (diff) |
extract_if_dead: use a known working transfer when checking connections
Make sure that this function sets a proper "live" transfer for the
connection before calling the protocol-specific connection check
function, and then clear it again afterward as a non-used connection has
no current transfer.
Reported-by: Jeroen Ooms
Reviewed-by: Marcel Raad
Reviewed-by: Daniel Gustafsson
Fixes #3463
Closes #3464
Diffstat (limited to 'lib')
-rw-r--r-- | lib/url.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -965,8 +965,9 @@ static bool extract_if_dead(struct connectdata *conn, /* The protocol has a special method for checking the state of the connection. Use it to check if the connection is dead. */ unsigned int state; - + conn->data = data; /* temporary transfer for this connection to use */ state = conn->handler->connection_check(conn, CONNCHECK_ISDEAD); + conn->data = NULL; /* clear transfer again */ dead = (state & CONNRESULT_DEAD); } else { @@ -3773,7 +3774,6 @@ static CURLcode create_conn(struct Curl_easy *data, /* Setup a "faked" transfer that'll do nothing */ if(!result) { - conn->data = data; conn->bits.tcpconnect[FIRSTSOCKET] = TRUE; /* we are "connected */ result = Curl_conncache_add_conn(data->state.conn_cache, conn); |