diff --git a/lib/libalpm/dload.c b/lib/libalpm/dload.c index a4c42f8d..6f33451a 100644 --- a/lib/libalpm/dload.c +++ b/lib/libalpm/dload.c @@ -877,9 +877,26 @@ int _alpm_download(alpm_handle_t *handle, int success = 0; if(payload->fileurl) { - if (handle->fetchcb(payload->fileurl, localpath, payload->force) != -1) { - success = 1; - break; + int ret; + + ret = handle->fetchcb(payload->fileurl, localpath, payload->force); + + if (ret != -1) { + /* Let's check if client requested downloading accompanion *.sig file */ + if(payload->download_signature) { + char *sig_fileurl; + + size_t sig_len = strlen(payload->fileurl) + 5; + MALLOC(sig_fileurl, sig_len, RET_ERR(handle, ALPM_ERR_MEMORY, -1)); + snprintf(sig_fileurl, sig_len, "%s.sig", payload->fileurl); + + ret = handle->fetchcb(sig_fileurl, localpath, payload->force); + + free(sig_fileurl); + } + if (ret != -1) { + success = 1; + } } } else { for(s = payload->servers; s; s = s->next) { @@ -892,12 +909,26 @@ int _alpm_download(alpm_handle_t *handle,