forked from enlightenment/efl
somewhat fix deferred freeing of curl objects
SVN revision: 68258
This commit is contained in:
parent
ec2c700988
commit
127c3b81da
|
@ -221,6 +221,7 @@ struct _Ecore_Con_Url
|
||||||
|
|
||||||
unsigned int event_count;
|
unsigned int event_count;
|
||||||
Eina_Bool dead : 1;
|
Eina_Bool dead : 1;
|
||||||
|
Eina_Bool multi : 1;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -293,8 +293,11 @@ ecore_con_url_free(Ecore_Con_Url *url_con)
|
||||||
curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSFUNCTION, NULL);
|
curl_easy_setopt(url_con->curl_easy, CURLOPT_PROGRESSFUNCTION, NULL);
|
||||||
curl_easy_setopt(url_con->curl_easy, CURLOPT_NOPROGRESS, EINA_TRUE);
|
curl_easy_setopt(url_con->curl_easy, CURLOPT_NOPROGRESS, EINA_TRUE);
|
||||||
|
|
||||||
|
if (url_con->multi)
|
||||||
|
{
|
||||||
_ecore_con_url_multi_remove(url_con);
|
_ecore_con_url_multi_remove(url_con);
|
||||||
_url_con_list = eina_list_remove(_url_con_list, url_con);
|
_url_con_list = eina_list_remove(_url_con_list, url_con);
|
||||||
|
}
|
||||||
|
|
||||||
curl_easy_cleanup(url_con->curl_easy);
|
curl_easy_cleanup(url_con->curl_easy);
|
||||||
}
|
}
|
||||||
|
@ -302,6 +305,7 @@ ecore_con_url_free(Ecore_Con_Url *url_con)
|
||||||
|
|
||||||
url_con->curl_easy = NULL;
|
url_con->curl_easy = NULL;
|
||||||
url_con->timer = NULL;
|
url_con->timer = NULL;
|
||||||
|
url_con->dead = EINA_TRUE;
|
||||||
if (url_con->event_count) return;
|
if (url_con->event_count) return;
|
||||||
ECORE_MAGIC_SET(url_con, ECORE_MAGIC_NONE);
|
ECORE_MAGIC_SET(url_con, ECORE_MAGIC_NONE);
|
||||||
|
|
||||||
|
@ -1267,9 +1271,8 @@ _ecore_con_url_multi_remove(Ecore_Con_Url *url_con)
|
||||||
{
|
{
|
||||||
CURLMcode ret;
|
CURLMcode ret;
|
||||||
|
|
||||||
if (url_con->dead) return;
|
|
||||||
url_con->dead = EINA_TRUE;
|
|
||||||
ret = curl_multi_remove_handle(_curlm, url_con->curl_easy);
|
ret = curl_multi_remove_handle(_curlm, url_con->curl_easy);
|
||||||
|
url_con->multi = EINA_FALSE;
|
||||||
if (ret != CURLM_OK) ERR("curl_multi_remove_handle failed: %s", curl_multi_strerror(ret));
|
if (ret != CURLM_OK) ERR("curl_multi_remove_handle failed: %s", curl_multi_strerror(ret));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1560,6 +1563,7 @@ _ecore_con_url_perform(Ecore_Con_Url *url_con)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
url_con->multi = EINA_TRUE;
|
||||||
_url_con_list = eina_list_append(_url_con_list, url_con);
|
_url_con_list = eina_list_append(_url_con_list, url_con);
|
||||||
ecore_timer_thaw(_curl_timer);
|
ecore_timer_thaw(_curl_timer);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue