summaryrefslogtreecommitdiff
path: root/lib/hostip.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2020-04-27 00:33:21 +0200
committerDaniel Stenberg <daniel@haxx.se>2020-04-30 14:27:54 +0200
commitc06902713998d68202c5a764de910ba8d0e8f54d (patch)
treebc7f53131c6b294af2b0475ed83349d0dcee8a3d /lib/hostip.c
parent9a8fa076bff31b55b6d12c0c6da7448ec4ecdf67 (diff)
downloadcurl-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.c12
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;
}