Commit 9be951a4 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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
parent 7239538d
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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.