From c82a1f95ebec3bd7e9da3df0a36dfaf7c9ae5ff9 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 26 Jan 2010 22:59:43 +0000 Subject: [PATCH] - Mike Crowe made libcurl return CURLE_COULDNT_RESOLVE_PROXY when it is the proxy that cannot be resolved when using c-ares. This matches the behaviour when not using c-ares. --- CHANGES | 5 +++++ RELEASE-NOTES | 2 +- lib/hostares.c | 27 ++++++++++++++++++++------- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index fee8bc2fd..d8f5c0e41 100644 --- a/CHANGES +++ b/CHANGES @@ -6,6 +6,11 @@ Changelog +Daniel Stenberg (26 Jan 2010) +- Mike Crowe made libcurl return CURLE_COULDNT_RESOLVE_PROXY when it is the + proxy that cannot be resolved when using c-ares. This matches the behaviour + when not using c-ares. + Björn Stenberg (23 Jan 2010) - Added a new flag: -J/--remote-header-name. This option tells the -O/--remote-name option to use the server-specified Content-Disposition diff --git a/RELEASE-NOTES b/RELEASE-NOTES index bf2c5d4c7..5b2c339b1 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -63,6 +63,6 @@ advice from friends like these: Markus Koetter, Chad Monroe, Martin Storsjo, Siegfried Gyuricsko, Jon Nelson, Julien Chaffraix, Renato Botelho, Peter Pentchev, Ingmar Runge, Johan van Selst, Charles Kerr, Gil Weber, David McCreedy, Chris Conroy, - Björn Stenberg + Bjorn Stenberg, Mike Crowe Thanks! (and sorry if I forgot to mention someone) diff --git a/lib/hostares.c b/lib/hostares.c index a7f1d1bd2..2d77a11ca 100644 --- a/lib/hostares.c +++ b/lib/hostares.c @@ -285,13 +285,26 @@ CURLcode Curl_wait_for_resolv(struct connectdata *conn, if(!conn->async.dns) { /* a name was not resolved */ if((timeout < 0) || (conn->async.status == ARES_ETIMEOUT)) { - failf(data, "Resolving host timed out: %s", conn->host.dispname); - rc = CURLE_COULDNT_RESOLVE_HOST; + if (conn->bits.httpproxy) { + failf(data, "Resolving proxy timed out: %s", conn->proxy.dispname); + rc = CURLE_COULDNT_RESOLVE_PROXY; + } + else { + failf(data, "Resolving host timed out: %s", conn->host.dispname); + rc = CURLE_COULDNT_RESOLVE_HOST; + } } else if(conn->async.done) { - failf(data, "Could not resolve host: %s (%s)", conn->host.dispname, - ares_strerror(conn->async.status)); - rc = CURLE_COULDNT_RESOLVE_HOST; + if (conn->bits.httpproxy) { + failf(data, "Could not resolve proxy: %s (%s)", conn->proxy.dispname, + ares_strerror(conn->async.status)); + rc = CURLE_COULDNT_RESOLVE_PROXY; + } + else { + failf(data, "Could not resolve host: %s (%s)", conn->host.dispname, + ares_strerror(conn->async.status)); + rc = CURLE_COULDNT_RESOLVE_HOST; + } } else rc = CURLE_OPERATION_TIMEDOUT; @@ -318,7 +331,7 @@ static void ares_query_completed_cb(void *arg, /* (struct connectdata *) */ { struct connectdata *conn = (struct connectdata *)arg; struct Curl_addrinfo * ai = NULL; - + #ifdef HAVE_CARES_CALLBACK_TIMEOUTS (void)timeouts; /* ignored */ #endif @@ -326,7 +339,7 @@ static void ares_query_completed_cb(void *arg, /* (struct connectdata *) */ if (status == CURL_ASYNC_SUCCESS) { ai = Curl_he2ai(hostent, conn->async.port); } - + (void)Curl_addrinfo_callback(arg, status, ai); }