On Fri, 17 Feb 2012 21:40:37 -0500 Michael Blumenkrantz
<michael.blumenkra...@gmail.com> said:

> Hi,
> 
> Attached is a very tiny demo which showcases a pretty huge (imo) bug in
> ecore-con-url: multiple simultaneous fetches are broken. When more than one
> curl object is added, only the last one will actually be fetched.

can't reproduce. i expanded your demo to call progress/data/complete callbacks.
attached src and log. downloads both urls - in parallel (well for the first
bit). the first 33.9kb data is fetched completely as is the 64.8k data. i
haven't actually checked the data itself - but everything else is showing "all
ok". no proxy set up here for this test btw. i ran a second test with a proxy
(well proxy fwd'd via an ssh tunnel to the other side of the world) and it
works too with slightly different fetch ordering.

attached logs+src. my svn updated and completely rebuilt just before this test
was run.

-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com

/*
gcc ecore_con_url_example.c -o ecore_con_url_example `pkg-config --cflags --libs ecore ecore-con`
 */
#include <Ecore.h>
#include <Ecore_Con.h>

Ecore_Con_Url *url1, *url2;

static const char *
url_num_get(Ecore_Con_Url *url)
{
   if (url == url1) return "URL1";
   else if (url == url2) return "URL2";
   return "????";
}

static Eina_Bool
data_cb(void *data, int ev_type, void *event)
{
   Ecore_Con_Event_Url_Data *ev = event;
   printf("[%s]  data size = %i\n", url_num_get(ev->url_con), ev->size);
   return EINA_FALSE;
}

static Eina_Bool
progress_cb(void *data, int ev_type, void *event)
{
   Ecore_Con_Event_Url_Progress *ev = event;
   printf("[%s]    progress %1.1fKB / %1.1fKB\n", url_num_get(ev->url_con), ev->down.now / 1024, ev->down.total / 1024);
   return EINA_FALSE;
}

static Eina_Bool
complete_cb(void *data, int ev_type, void *event)
{
   Ecore_Con_Event_Url_Complete *ev = event;
   printf("[%s]  complete status %i\n", url_num_get(ev->url_con), ev->status);
   return EINA_FALSE;
}

int
main(void)
{
   eina_init();
   ecore_init();
   ecore_con_init();
   ecore_con_url_init();

   ecore_event_handler_add(ECORE_CON_EVENT_URL_DATA, data_cb, NULL);
   ecore_event_handler_add(ECORE_CON_EVENT_URL_PROGRESS, progress_cb, NULL);
   ecore_event_handler_add(ECORE_CON_EVENT_URL_COMPLETE, complete_cb, NULL);
   
   url1 = ecore_con_url_new("http://www.dreamincode.net/forums/uploads/monthly_05_2010/post-380028-12747928967239.jpg.pagespeed.ce.yRppR_j7ae.jpg";);
   printf("[%p]-> URL1\n", url1);
   ecore_con_url_get(url1);
   url2 = ecore_con_url_new("http://www.prelovac.com/vladimir/wp-content/uploads/2008/03/example.jpg";);
   printf("[%p]-> URL2\n", url2);
   ecore_con_url_get(url2);

   ecore_main_loop_begin();

   return 0;
}

Attachment: ecore_con_url_example.log
Description: Binary data

Attachment: ecore_con_url_example-proxy.log
Description: Binary data

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to