aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-07-01 23:32:20 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-07-01 23:32:20 +0200
commit9be951a41503cd212d035496a003924f00b7aa06 (patch)
treeaaede2f1f0fabc3652bf9062a1f51850be8bbe7e
parent7239538d9acf5b6743181514814dc750b73096a8 (diff)
multi: CURLINFO_LASTSOCKET doesn't work after remove_handle
When curl_multi_remove_handle() is called and an easy handle is returned to the connection cache held in the multi handle, then we cannot allow CURLINFO_LASTSOCKET to extract it since that will more or less encourage that the user uses the socket while it can get used by libcurl again. Without this fix, we'd get a segfault in Curl_getconnectinfo() trying to dereference the NULL pointer in 'data->state.connc'. Bug: http://curl.haxx.se/bug/view.cgi?id=3023840
-rw-r--r--lib/multi.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/multi.c b/lib/multi.c
index ea284b3f3..9273f8dcf 100644
--- a/lib/multi.c
+++ b/lib/multi.c
@@ -656,6 +656,10 @@ CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
to that since we're not part of that handle anymore */
easy->easy_handle->state.connc = NULL;
+ /* Since we return the connection back to the communal connection pool
+ we mark the last connection as inaccessible */
+ easy->easy_handle->state.lastconnect = -1;
+
/* Modify the connectindex since this handle can't point to the
connection cache anymore.