diff options
author | Gustavo Sverzut Barbieri <barbieri@profusion.mobi> | 2016-11-10 00:05:49 -0200 |
---|---|---|
committer | Gustavo Sverzut Barbieri <barbieri@profusion.mobi> | 2016-11-10 00:10:11 -0200 |
commit | 7917fa4ebfad0c02e9b054c3b6f0108fc8ec759f (patch) | |
tree | cffed44a9cfe324b29b62d3a4e60a05c9b95cb8c | |
parent | 9ad35a6fa213a420f532a4fc65059f7f24060135 (diff) | |
download | efl-7917fa4ebfad0c02e9b054c3b6f0108fc8ec759f.tar.gz |
efl_net_dialer_http: NULL-ify thread pointer when it's gone.
on thread cancel and end, we should nullify the pointer if it was
still set.
-rw-r--r-- | src/lib/ecore_con/efl_net_dialer_http.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/ecore_con/efl_net_dialer_http.c b/src/lib/ecore_con/efl_net_dialer_http.c index af9f9fbb5b..4c3fdad554 100644 --- a/src/lib/ecore_con/efl_net_dialer_http.c +++ b/src/lib/ecore_con/efl_net_dialer_http.c @@ -1308,12 +1308,17 @@ _efl_net_dialer_http_libproxy_context_free(Efl_Net_Dialer_Http_Libproxy_Context } static void -_efl_net_dialer_http_libproxy_end(void *data, Ecore_Thread *thread EINA_UNUSED) +_efl_net_dialer_http_libproxy_end(void *data, Ecore_Thread *thread) { Efl_Net_Dialer_Http_Libproxy_Context *ctx = data; Eo *o = ctx->o; Efl_Net_Dialer_Http_Data *pd = efl_data_scope_get(o, MY_CLASS); + EINA_SAFETY_ON_NULL_RETURN(pd); + + if (pd->libproxy_thread == thread) + pd->libproxy_thread = NULL; + if (ctx->proxy) { CURLcode r = curl_easy_setopt(pd->easy, CURLOPT_PROXY, ctx->proxy); @@ -1364,7 +1369,10 @@ _efl_net_dialer_http_efl_net_dialer_dial(Eo *o, Efl_Net_Dialer_Http_Data *pd, co Efl_Net_Dialer_Http_Libproxy_Context *ctx; if (pd->libproxy_thread) - ecore_thread_cancel(pd->libproxy_thread); + { + ecore_thread_cancel(pd->libproxy_thread); + pd->libproxy_thread = NULL; + } ctx = calloc(1, sizeof(Efl_Net_Dialer_Http_Libproxy_Context)); EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, ENOMEM); |