From bce8e59b81e5bdfa46501c25bc1b3fca60a69cb8 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 12 Oct 2015 22:26:36 +0200 Subject: set failreasons similar to connect.cc based on curl errors Detecting network errors has some benefits in the acquire system as if we can't connect to a host trying it for a million files is pointless. http and co which use connect.cc deal with this, but https which uses curl had connection failures as "normal" errors which could potentially be worked around (like trying Release instead of the failed InRelease). Git-Dch: Ignore --- methods/https.cc | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/methods/https.cc b/methods/https.cc index 432a64303..a15915910 100644 --- a/methods/https.cc +++ b/methods/https.cc @@ -419,10 +419,25 @@ bool HttpsMethod::Fetch(FetchItem *Itm) curl_slist_free_all(headers); // cleanup - if (success != 0) + if (success != CURLE_OK) { - _error->Error("%s", curl_errorstr); - return false; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wswitch" + switch (success) + { + case CURLE_COULDNT_RESOLVE_PROXY: + case CURLE_COULDNT_RESOLVE_HOST: + SetFailReason("ResolveFailure"); + break; + case CURLE_COULDNT_CONNECT: + SetFailReason("ConnectionRefused"); + break; + case CURLE_OPERATION_TIMEDOUT: + SetFailReason("Timeout"); + break; + } +#pragma GCC diagnostic pop + return _error->Error("%s", curl_errorstr); } // server says file not modified -- cgit v1.2.3