From 42a0518ff4e3dae48ba988c00299d92e1e2903c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?William=20Wennerstr=C3=B6m?= Date: Thu, 10 Dec 2020 19:26:06 +0100 Subject: [PATCH] Fix deadlock on error before HTTP download has begun --- src/tools/http_download.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/tools/http_download.c b/src/tools/http_download.c index f97fd704..2ff49b61 100644 --- a/src/tools/http_download.c +++ b/src/tools/http_download.c @@ -123,7 +123,7 @@ http_file_get(void* userdata) "output file at '%s' for writing (%s).", download->url, download->filename, g_strerror(errno)); - return NULL; + goto out; } char* cert_path = prefs_get_string(PREF_TLS_CERTPATH); @@ -185,9 +185,6 @@ http_file_get(void* userdata) } } - download_processes = g_slist_remove(download_processes, download); - pthread_mutex_unlock(&lock); - if (download->cmd_template != NULL) { gchar** argv = format_call_external_argv(download->cmd_template, download->url, @@ -208,6 +205,11 @@ http_file_get(void* userdata) free(download->cmd_template); } +out: + + download_processes = g_slist_remove(download_processes, download); + pthread_mutex_unlock(&lock); + free(download->url); free(download->filename); free(download);