diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-06-05 15:50:49 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-06-10 00:47:48 +0200 |
commit | 094b5f3540fec1401f514bc470f11f441527d30a (patch) | |
tree | 734089c8dbbcb1019310b98a729c0de6130eebff /lib/url.c | |
parent | fb2839db24b0344d0c2a563787a70880486a19c8 (diff) | |
download | curl-094b5f3540fec1401f514bc470f11f441527d30a.tar.gz |
multi: make sure 'data' can present in several sockhash entries
Since more than one socket can be used by each transfer at a given time,
each sockhash entry how has its own hash table with transfers using that
socket.
In addition, the sockhash entry can now be marked 'blocked = TRUE'"
which then makes the delete function just set 'removed = TRUE' instead
of removing it "for real", as a way to not rip out the carpet under the
feet of a parent function that iterates over the transfers of that same
sockhash entry.
Reported-by: Tom van der Woerdt
Fixes #3961
Fixes #3986
Fixes #3995
Fixes #4004
Closes #3997
Diffstat (limited to 'lib/url.c')
-rw-r--r-- | lib/url.c | 9 |
1 files changed, 1 insertions, 8 deletions
@@ -1673,13 +1673,6 @@ static void free_idnconverted_hostname(struct hostname *host) #endif } -static void llist_dtor(void *user, void *element) -{ - (void)user; - (void)element; - /* Do nothing */ -} - /* * Allocate and initialize a new connectdata object. */ @@ -1791,7 +1784,7 @@ static struct connectdata *allocate_conn(struct Curl_easy *data) #endif /* Initialize the easy handle list */ - Curl_llist_init(&conn->easyq, (curl_llist_dtor) llist_dtor); + Curl_llist_init(&conn->easyq, NULL); #ifdef HAVE_GSSAPI conn->data_prot = PROT_CLEAR; |