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.
This commit is contained in:
Gustavo Sverzut Barbieri 2016-08-29 14:49:03 -03:00
parent 68ea5bd025
commit fba2743361
1 changed files with 10 additions and 0 deletions

View File

@ -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;
}
}
}