Thank you for your advice. libcurl already supports asynchronous DNS lookup (including c-ares). Ecore_Con_Url is integrated with libcurl. But I think that code in below blocks asynchronous mechanism of libcurl. while (curl_multi_perform(_curlm, &still_running) == CURLM_CALL_MULTI_PERFORM) ;
I want to fix it simple. :) On Thu, Sep 22, 2011 at 12:48 AM, Nicolas Aguirre <[email protected] > wrote: > 2011/9/21 Kim Yunhan <[email protected]>: > > Hello! > > > > elm_map uses Ecore Con with CURL. > > I tested elm_map many times on my device. > > But sometimes UI interaction is held when data connection is poor. > > So I tried to debug and I found that this code lead to hold an Ecore main > > loop. > > > > ---------------------------------------------- > > In ecore_con_url.c > > > > while (curl_multi_perform(_curlm, &still_running) == > > CURLM_CALL_MULTI_PERFORM) ; > > ---------------------------------------------- > > > > curl_multi_perform() is CURL's asynchronous API. > > But above code hold an Ecore main loop. > > When it takes long time in libcurl, UI interaction is delayed. > > > > For example, If you have poor data connection. > > libcurl is trying to resolve DNS in this step. > > But it have to wait until timeout. > > At that time it looks like being locked. > > > > So I write a patch for fixing it. > > > > Index: ecore_con_url.c > > =================================================================== > > --- ecore_con_url.c (revision 63518) > > +++ ecore_con_url.c (working copy) > > @@ -1364,7 +1364,10 @@ > > url_con->active = EINA_TRUE; > > curl_multi_add_handle(_curlm, url_con->curl_easy); > > /* This one can't be stopped, or the download never start. */ > > - while (curl_multi_perform(_curlm, &still_running) == > > CURLM_CALL_MULTI_PERFORM) ; > > + while (curl_multi_perform(_curlm, &still_running) == > > CURLM_CALL_MULTI_PERFORM) > > + { > > + ecore_main_loop_iterate(); > > + } > > > > completed_immediately = > _ecore_con_url_process_completed_jobs(url_con); > > > > I am not sure that this patch is right because I don't understand Ecore > and > > libcurl deeply. > > So I need your help. :) > > Please review this patch. > > > > Best regards, > > Yunhan Kim (spbear) > > > > > ------------------------------------------------------------------------------ > > All the data continuously generated in your IT infrastructure contains a > > definitive record of customers, application performance, security > > threats, fraudulent activity and more. Splunk takes this data and makes > > sense of it. Business sense. IT sense. Common sense. > > http://p.sf.net/sfu/splunk-d2dcopy1 > > _______________________________________________ > > enlightenment-devel mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > > > There is a c_ares[1] support for asynchronous DNS resolution in > ecore_con iirc. Why not using it ? > > [1] http://c-ares.haxx.se/ > > -- > Nicolas Aguirre > Mail: [email protected] > Web: http://enna.geexbox.org > Blog: http://dev.enlightenment.fr/~captainigloo/ > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
