// The number of concurrent downloads
#define MAX_PARALLEL 4
-/*
- Count how many downloaders are using cURL and free global resources when no
- downloaders are being left.
-*/
-static int curl_initialized = 0;
-
struct pakfire_mirror {
STAILQ_ENTRY(pakfire_mirror) nodes;
}
static int pakfire_downloader_setup_curl(struct pakfire_downloader* downloader) {
- // Globally initialise cURL
- if (!curl_initialized++) {
- int r = curl_global_init(CURL_GLOBAL_ALL);
- if (r) {
- ERROR(downloader->pakfire, "Could not setup cURL: %d\n", r);
- return r;
- }
- }
-
// Create a new multi handle
downloader->curl = curl_multi_init();
if (!downloader->curl) {
if (downloader->curl)
curl_multi_cleanup(downloader->curl);
- // Cleanup global stuff after all downloader instances have been freed
- if (!--curl_initialized)
- curl_global_cleanup();
-
pakfire_unref(downloader->pakfire);
free(downloader);
}