diff options
author | Daniel Stenberg <daniel@haxx.se> | 2020-04-27 00:33:21 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2020-04-30 14:27:54 +0200 |
commit | c06902713998d68202c5a764de910ba8d0e8f54d (patch) | |
tree | bc7f53131c6b294af2b0475ed83349d0dcee8a3d /lib/hostip.c | |
parent | 9a8fa076bff31b55b6d12c0c6da7448ec4ecdf67 (diff) | |
download | curl-c06902713998d68202c5a764de910ba8d0e8f54d.tar.gz |
conncache: various concept cleanups
More connection cache accesses are protected by locks.
CONNCACHE_* is a beter prefix for the connection cache lock macros.
Curl_attach_connnection: now called as soon as there's a connection
struct available and before the connection is added to the connection
cache.
Curl_disconnect: now assumes that the connection is already removed from
the connection cache.
Ref: #4915
Closes #5009
Diffstat (limited to 'lib/hostip.c')
-rw-r--r-- | lib/hostip.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/hostip.c b/lib/hostip.c index c0feb79fb..f5bb6348a 100644 --- a/lib/hostip.c +++ b/lib/hostip.c @@ -1085,10 +1085,12 @@ CURLcode Curl_once_resolved(struct connectdata *conn, result = Curl_setup_conn(conn, protocol_done); - if(result) - /* We're not allowed to return failure with memory left allocated - in the connectdata struct, free those here */ - Curl_disconnect(conn->data, conn, TRUE); /* close the connection */ - + if(result) { + struct Curl_easy *data = conn->data; + DEBUGASSERT(data); + Curl_detach_connnection(data); + Curl_conncache_remove_conn(data, conn, TRUE); + Curl_disconnect(data, conn, TRUE); + } return result; } |