@@ -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,