From: Lennart Poettering Date: Fri, 15 Jan 2021 20:22:27 +0000 (+0100) Subject: import: reset PullJob properly X-Git-Tag: v248-rc1~296^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8bc3f0b89f8bdf292a2d76108d45b7d5c29d145f;p=thirdparty%2Fsystemd.git import: reset PullJob properly Properly reset all fields that have to do with the current GET job when we restart things. Previously we freed/reset only some stuff, leaking some memory even. --- diff --git a/src/import/pull-job.c b/src/import/pull-job.c index 2f6bca83365..b5fb0193ec1 100644 --- a/src/import/pull-job.c +++ b/src/import/pull-job.c @@ -72,11 +72,30 @@ static int pull_job_restart(PullJob *j, const char *new_url) { return r; j->state = PULL_JOB_INIT; + j->error = 0; j->payload = mfree(j->payload); j->payload_size = 0; j->payload_allocated = 0; j->written_compressed = 0; j->written_uncompressed = 0; + j->content_length = UINT64_MAX; + j->etag = mfree(j->etag); + j->etag_exists = false; + j->mtime = 0; + j->checksum = mfree(j->checksum); + + curl_glue_remove_and_free(j->glue, j->curl); + j->curl = NULL; + + curl_slist_free_all(j->request_header); + j->request_header = NULL; + + import_compress_free(&j->compress); + + if (j->checksum_context) { + gcry_md_close(j->checksum_context); + j->checksum_context = NULL; + } r = pull_job_begin(j); if (r < 0)