- if (result != CURLE_OK) {
- log_error("Transfer failed: %s", curl_easy_strerror(result));
- r = -EIO;
- goto fail;
- }
-
- code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &status);
- if (code != CURLE_OK) {
- log_error("Failed to retrieve response code: %s", curl_easy_strerror(code));
- r = -EIO;
- goto fail;
- } else if (status == 304) {
- log_info("Image already downloaded. Skipping download.");
- raw_import_file_success(f);
- return;
- } else if (status >= 300) {
- log_error("HTTP request to %s failed with code %li.", f->url, status);
- r = -EIO;
- goto fail;
- } else if (status < 200) {
- log_error("HTTP request to %s finished with unexpected code %li.", f->url, status);
- r = -EIO;
- goto fail;
- }
-
- if (f->disk_fd < 0) {
- log_error("No data received.");
- r = -EIO;
- goto fail;
- }
-
- if (f->content_length != (uint64_t) -1 &&
- f->content_length != f->written_compressed) {
- log_error("Download truncated.");
- r = -EIO;
- goto fail;
- }
-
- /* Make sure the file size is right, in case the file was
- * sparse and we just seeked for the last part */
- if (ftruncate(f->disk_fd, f->written_uncompressed) < 0) {
- log_error_errno(errno, "Failed to truncate file: %m");
- r = -errno;
- goto fail;
- }