- r = curl_header_strdup(contents, sz, "ETag:", &etag);
- if (r < 0) {
- log_oom();
- goto fail;
- }
- if (r > 0) {
- free(f->etag);
- f->etag = etag;
-
- if (strv_contains(f->old_etags, f->etag)) {
- log_info("Image already downloaded. Skipping download.");
- raw_import_file_success(f);
- return sz;
- }
-
- return sz;
- }
-
- r = curl_header_strdup(contents, sz, "Content-Length:", &length);
- if (r < 0) {
- log_oom();
- goto fail;
- }
- if (r > 0) {
- (void) safe_atou64(length, &f->content_length);
-
- if (f->content_length != (uint64_t) -1) {
- char bytes[FORMAT_BYTES_MAX];
- log_info("Downloading %s.", format_bytes(bytes, sizeof(bytes), f->content_length));
- }
-
- return sz;
- }
-
- r = curl_header_strdup(contents, sz, "Last-Modified:", &last_modified);
- if (r < 0) {
- log_oom();
- goto fail;
- }
- if (r > 0) {
- (void) curl_parse_http_time(last_modified, &f->mtime);
- return sz;
- }
-
- return sz;
-
-fail:
- raw_import_finish(f->import, r);
- return 0;
-}
-
-static int raw_import_file_progress_callback(void *userdata, curl_off_t dltotal, curl_off_t dlnow, curl_off_t ultotal, curl_off_t ulnow) {
- RawImportFile *f = userdata;
- unsigned percent;
- usec_t n;
-
- assert(f);
-
- if (dltotal <= 0)
- return 0;
-
- percent = ((100 * dlnow) / dltotal);
- n = now(CLOCK_MONOTONIC);
-
- if (n > f->last_status_usec + USEC_PER_SEC &&
- percent != f->progress_percent) {
- char buf[FORMAT_TIMESPAN_MAX];