summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2019-01-11 23:43:38 +0100
committerDaniel Stenberg <daniel@haxx.se>2019-01-13 17:09:14 +0100
commit54b201b48c90a2fb03c2baf90837c6b63adbc344 (patch)
tree8fbca555cca20c416efdc4331520cac7f98c3511
parentcf8c70594fda8aaba1b2b1d1e34deefe927434f9 (diff)
downloadcurl-54b201b48c90a2fb03c2baf90837c6b63adbc344.tar.gz
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
-rw-r--r--lib/url.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/url.c b/lib/url.c
index 98bcdac36..273c11de5 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -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);