diff --git a/legacy/ecore/src/lib/ecore_file/Ecore_File.h b/legacy/ecore/src/lib/ecore_file/Ecore_File.h index 42194ed0ad..dfd4dbbac9 100644 --- a/legacy/ecore/src/lib/ecore_file/Ecore_File.h +++ b/legacy/ecore/src/lib/ecore_file/Ecore_File.h @@ -102,6 +102,7 @@ extern "C" { long int ultotal, long int ulnow), void *data); + EAPI void ecore_file_download_abort_all(void); EAPI int ecore_file_download_protocol_available(const char *protocol); #ifdef __cplusplus diff --git a/legacy/ecore/src/lib/ecore_file/ecore_file_download.c b/legacy/ecore/src/lib/ecore_file/ecore_file_download.c index 9f8b983580..33c533f68f 100644 --- a/legacy/ecore/src/lib/ecore_file/ecore_file_download.c +++ b/legacy/ecore/src/lib/ecore_file/ecore_file_download.c @@ -82,6 +82,29 @@ ecore_file_download_shutdown(void) return init; } +void +ecore_file_download_abort_all(void) +{ +#ifdef HAVE_CURL + Ecore_File_Download_Job *job; + + if (!_job_list) + return; + + ecore_list_goto_first(_job_list); + while ((job = ecore_list_next(_job_list))) + { + ecore_main_fd_handler_del(job->fd_handler); + curl_multi_remove_handle(curlm, job->curl); + curl_easy_cleanup(job->curl); + fclose(job->file); + free(job->dst); + free(job); + } + ecore_list_clear(_job_list); +#endif +} + EAPI int ecore_file_download(const char *url, const char *dst, void (*completion_cb)(void *data, const char *file, int status),