diff options
author | Daniel Stenberg <daniel@haxx.se> | 2019-05-28 08:23:43 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2019-05-28 12:17:02 +0200 |
commit | 8581e1928ea8e125021408ec071fcedb0276c7fe (patch) | |
tree | c97f0418a6a97458f252f058bcb62b21592404eb /lib/urldata.h | |
parent | 28526e9c80f7c923fac0aef503c7a63d84994282 (diff) | |
download | curl-8581e1928ea8e125021408ec071fcedb0276c7fe.tar.gz |
multi: track users of a socket better
They need to be removed from the socket hash linked list with more care.
When sh_delentry() is called to remove a sockethash entry, remove all
individual transfers from the list first. To enable this, each Curl_easy struct
now stores a pointer to the sockethash entry to know how to remove itself.
Reported-by: Tom van der Woerdt and Kunal Ekawde
Fixes #3952
Fixes #3904
Closes #3953
Diffstat (limited to 'lib/urldata.h')
-rw-r--r-- | lib/urldata.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/urldata.h b/lib/urldata.h index d759592d9..af51b6942 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -1778,6 +1778,7 @@ struct Curl_easy { struct connectdata *conn; struct curl_llist_element connect_queue; struct curl_llist_element sh_queue; /* list per Curl_sh_entry */ + struct Curl_sh_entry *sh_entry; /* the socket hash this was added to */ struct curl_llist_element conn_queue; /* list per connectdata */ CURLMstate mstate; /* the handle's state */ |