9d7d3f
From 74d01a8e4d48eedc526cffaf6a6bc782b139e068 Mon Sep 17 00:00:00 2001
9d7d3f
From: Kim Vandry <vandry@users.sf.net>
9d7d3f
Date: Mon, 18 Feb 2013 21:36:34 +0100
9d7d3f
Subject: [PATCH 1/2] Curl_resolver_is_resolved: show proper host name on failed resolve
9d7d3f
9d7d3f
[upstream commit 25e577b33d00afb6630cf2cac98d6baa319e9aef]
9d7d3f
9d7d3f
Signed-off-by: Kamil Dudka <kdudka@redhat.com>
9d7d3f
---
9d7d3f
 lib/asyn-thread.c |   35 ++++++++++++++++++++---------------
9d7d3f
 1 files changed, 20 insertions(+), 15 deletions(-)
9d7d3f
9d7d3f
diff --git a/lib/asyn-thread.c b/lib/asyn-thread.c
9d7d3f
index 7a8294d..c392b21 100644
9d7d3f
--- a/lib/asyn-thread.c
9d7d3f
+++ b/lib/asyn-thread.c
9d7d3f
@@ -430,8 +430,19 @@ static const char *gai_strerror(int ecode)
9d7d3f
  * error
9d7d3f
  */
9d7d3f
 
9d7d3f
-static void resolver_error(struct connectdata *conn, const char *host_or_proxy)
9d7d3f
+static CURLcode resolver_error(struct connectdata *conn)
9d7d3f
 {
9d7d3f
+  const char *host_or_proxy;
9d7d3f
+  CURLcode rc;
9d7d3f
+  if(conn->bits.httpproxy) {
9d7d3f
+    host_or_proxy = "proxy";
9d7d3f
+    rc = CURLE_COULDNT_RESOLVE_PROXY;
9d7d3f
+  }
9d7d3f
+  else {
9d7d3f
+    host_or_proxy = "host";
9d7d3f
+    rc = CURLE_COULDNT_RESOLVE_HOST;
9d7d3f
+  }
9d7d3f
+
9d7d3f
   failf(conn->data, "Could not resolve %s: %s; %s", host_or_proxy,
9d7d3f
         conn->async.hostname,
9d7d3f
 #ifdef HAVE_GAI_STRERROR
9d7d3f
@@ -442,6 +453,7 @@ static void resolver_error(struct connectdata *conn, const char *host_or_proxy)
9d7d3f
         Curl_strerror(conn, conn->async.status)
9d7d3f
 #endif
9d7d3f
     );
9d7d3f
+  return rc;
9d7d3f
 }
9d7d3f
 
9d7d3f
 /*
9d7d3f
@@ -473,17 +485,9 @@ CURLcode Curl_resolver_wait_resolv(struct connectdata *conn,
9d7d3f
   if(entry)
9d7d3f
     *entry = conn->async.dns;
9d7d3f
 
9d7d3f
-  if(!conn->async.dns) {
9d7d3f
-    /* a name was not resolved */
9d7d3f
-    if(conn->bits.httpproxy) {
9d7d3f
-      resolver_error(conn, "proxy");
9d7d3f
-      rc = CURLE_COULDNT_RESOLVE_PROXY;
9d7d3f
-    }
9d7d3f
-    else {
9d7d3f
-      resolver_error(conn, "host");
9d7d3f
-      rc = CURLE_COULDNT_RESOLVE_HOST;
9d7d3f
-    }
9d7d3f
-  }
9d7d3f
+  if(!conn->async.dns)
9d7d3f
+    /* a name was not resolved, report error */
9d7d3f
+    rc = resolver_error(conn);
9d7d3f
 
9d7d3f
   destroy_async_data(&conn->async);
9d7d3f
 
9d7d3f
@@ -518,12 +522,13 @@ CURLcode Curl_resolver_is_resolved(struct connectdata *conn,
9d7d3f
 
9d7d3f
   if(done) {
9d7d3f
     getaddrinfo_complete(conn);
9d7d3f
-    destroy_async_data(&conn->async);
9d7d3f
 
9d7d3f
     if(!conn->async.dns) {
9d7d3f
-      resolver_error(conn, "host");
9d7d3f
-      return CURLE_COULDNT_RESOLVE_HOST;
9d7d3f
+      CURLcode rc = resolver_error(conn);
9d7d3f
+      destroy_async_data(&conn->async);
9d7d3f
+      return rc;
9d7d3f
     }
9d7d3f
+    destroy_async_data(&conn->async);
9d7d3f
     *entry = conn->async.dns;
9d7d3f
   }
9d7d3f
   else {
9d7d3f
-- 
9d7d3f
1.7.1
9d7d3f