From: Gustavo Sverzut Barbieri Date: Mon, 29 Aug 2016 17:49:03 +0000 (-0300) Subject: efl_net_dialer_http: cancel curl multi timer when it's gone. X-Git-Tag: upstream/1.20.0~4567 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fba2743361d5a149f9d9ccc7642dc209da523c01;p=platform%2Fupstream%2Fefl.git efl_net_dialer_http: cancel curl multi timer when it's gone. If we delete the curl multi handle, then we should stop any timer that was scheduled, otherwise it will use a dead or null pointer. also add some debug to help track down when the multi handle is deleted. --- diff --git a/src/lib/ecore_con/efl_net_dialer_http.c b/src/lib/ecore_con/efl_net_dialer_http.c index d3a4b55..f80bd4e 100644 --- a/src/lib/ecore_con/efl_net_dialer_http.c +++ b/src/lib/ecore_con/efl_net_dialer_http.c @@ -522,6 +522,9 @@ static void _efl_net_dialer_http_curlm_remove(Efl_Net_Dialer_Http_Curlm *cm, Eo *o, CURL *handle) { CURLMcode r = curl_multi_remove_handle(cm->multi, handle); + + DBG("removed handle cm=%p multi=%p easy=%p: %s", + cm, cm->multi, handle, curl_multi_strerror(r)); if (r != CURLM_OK) { ERR("could not unregister curl multi handle %p: %s", @@ -531,8 +534,15 @@ _efl_net_dialer_http_curlm_remove(Efl_Net_Dialer_Http_Curlm *cm, Eo *o, CURL *ha cm->users = eina_list_remove(cm->users, o); if (!cm->users) { + DBG("cleaned up cm=%p multi=%p", cm, cm->multi); curl_multi_cleanup(cm->multi); cm->multi = NULL; + + if (cm->timer) + { + efl_del(cm->timer); + cm->timer = NULL; + } } }