chiark / gitweb /
bus-proxy: be more verbose if messages cannot be forwarded
[elogind.git] / src / import / import-job.c
index 337a5c5a22326f71eeccedf6e7db1e2a0c1ae002..809486500ba55cf6d6b045e5b1fda78956560d3f 100644 (file)
@@ -63,6 +63,7 @@ static void import_job_finish(ImportJob *j, int ret) {
 
         if (ret == 0) {
                 j->state = IMPORT_JOB_DONE;
+                j->progress_percent = 100;
                 log_info("Download of %s complete.", j->url);
         } else {
                 j->state = IMPORT_JOB_FAILED;
@@ -573,6 +574,12 @@ static size_t import_job_header_callback(void *contents, size_t size, size_t nme
                 return sz;
         }
 
+        if (j->on_header) {
+                r = j->on_header(j, contents, sz);
+                if (r < 0)
+                        goto fail;
+        }
+
         return sz;
 
 fail:
@@ -615,6 +622,9 @@ static int import_job_progress_callback(void *userdata, curl_off_t dltotal, curl
 
                 j->progress_percent = percent;
                 j->last_status_usec = n;
+
+                if (j->on_progress)
+                        j->on_progress(j);
         }
 
         return 0;
@@ -672,10 +682,22 @@ int import_job_begin(ImportJob *j) {
                 if (!hdr)
                         return -ENOMEM;
 
-                j->request_header = curl_slist_new(hdr, NULL);
-                if (!j->request_header)
-                        return -ENOMEM;
+                if (!j->request_header) {
+                        j->request_header = curl_slist_new(hdr, NULL);
+                        if (!j->request_header)
+                                return -ENOMEM;
+                } else {
+                        struct curl_slist *l;
+
+                        l = curl_slist_append(j->request_header, hdr);
+                        if (!l)
+                                return -ENOMEM;
+
+                        j->request_header = l;
+                }
+        }
 
+        if (j->request_header) {
                 if (curl_easy_setopt(j->curl, CURLOPT_HTTPHEADER, j->request_header) != CURLE_OK)
                         return -EIO;
         }