From: Enlightenment C. <no...@cv...> - 2007-01-12 19:49:49
|
Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_file Modified Files: ecore_file_download.c Log Message: Limit curl run to 0.2 seconds. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore_file/ecore_file_download.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- ecore_file_download.c 10 Nov 2006 19:11:12 -0000 1.12 +++ ecore_file_download.c 13 Jan 2007 01:49:42 -0000 1.13 @@ -195,6 +195,7 @@ int flags; int n_remaining, still_running; Ecore_File_Download_Job *job; + double start = 0.0; job = calloc(1, sizeof(Ecore_File_Download_Job)); if (!job) return NULL; @@ -216,7 +217,7 @@ curl_easy_setopt(job->curl, CURLOPT_URL, url); curl_easy_setopt(job->curl, CURLOPT_WRITEDATA, job->file); - if(progress_cb) + if (progress_cb) { curl_easy_setopt(job->curl, CURLOPT_NOPROGRESS, FALSE); curl_easy_setopt(job->curl, CURLOPT_PROGRESSDATA, job); @@ -230,7 +231,11 @@ ecore_list_append(_job_list, job); curl_multi_add_handle(curlm, job->curl); - while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM); + start = ecore_time_get(); + while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM) + { + if ((ecore_time_get() - start) > 0.2) break; + } /* check for completed jobs */ while ((curlmsg = curl_multi_info_read(curlm, &n_remaining)) != NULL) @@ -312,9 +317,13 @@ Ecore_File_Download_Job *job; CURLMsg *curlmsg; int n_remaining, still_running; + double start = 0.0; - /* FIXME: Can this run for a long time? Maybe limit how long it can run */ - while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM); + start = ecore_time_get(); + while (curl_multi_perform(curlm, &still_running) == CURLM_CALL_MULTI_PERFORM) + { + if ((ecore_time_get() - start) > 0.2) break; + } /* Loop jobs and check if any are done */ while ((curlmsg = curl_multi_info_read(curlm, &n_remaining)) != NULL) |