chiark / gitweb /
import: simplify dkr importer, by making use of generic import-job logic, used by...
[elogind.git] / src / import / import-job.c
index 337a5c5a22326f71eeccedf6e7db1e2a0c1ae002..cde40b0f97c349679c6a44495359d448b0268f07 100644 (file)
@@ -573,6 +573,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:
@@ -672,10 +678,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;
         }