From 437863717a5678daf71d2b260552d052bf4a7db0 Mon Sep 17 00:00:00 2001 From: Steel Titanium Date: Sat, 18 Apr 2020 23:38:29 -0400 Subject: [PATCH] Show more descriptive error on failed downloads --- src/d_netfil.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/d_netfil.c b/src/d_netfil.c index 05aecce2..821d2a5b 100644 --- a/src/d_netfil.c +++ b/src/d_netfil.c @@ -1116,11 +1116,14 @@ void CURLPrepareFile(const char* url, int dfilenum) void CURLGetFile(void) { - CURLMcode mc; /* return code used by curl_multi_perform and curl_multi_wait() */ + CURLMcode mc; /* return code used by curl_multi_wait() */ + CURLcode easyres; /* Return from easy interface */ int numfds; CURLMsg *m; /* for picking up messages with the transfer status */ CURL *e; int msgs_left; /* how many messages are left */ + const char *easy_handle_error; + long response_code = 0; if (curl_runninghandles) { @@ -1143,8 +1146,14 @@ void CURLGetFile(void) { if (m && (m->msg == CURLMSG_DONE)) { - if (m->data.result != 0) + e = m->easy_handle; + easyres = m->data.result; + if (easyres != CURLE_OK) { + if (easyres == CURLE_HTTP_RETURNED_ERROR) + curl_easy_getinfo(e, CURLINFO_RESPONSE_CODE, &response_code); + + easy_handle_error = (response_code) ? va("HTTP reponse code %ld", response_code) : curl_easy_strerror(easyres); curl_curfile->status = FS_FALLBACK; curl_curfile->currentsize = curl_origfilesize; curl_curfile->totalsize = curl_origtotalfilesize; @@ -1154,7 +1163,7 @@ void CURLGetFile(void) curl_curfile->file = NULL; //nameonly(curl_curfile->filename); nameonly(curl_realname); - CONS_Printf(M_GetText("Failed to download %s...\n"), curl_realname); + CONS_Printf(M_GetText("Failed to download %s (%s)\n"), curl_realname, easy_handle_error); } else { @@ -1164,7 +1173,6 @@ void CURLGetFile(void) fclose(curl_curfile->file); } - e = m->easy_handle; curl_running = false; curl_transfers--; curl_multi_remove_handle(multi_handle, e);