Improve error reporting from info_slave
authorAri Johnson <ari@theari.com>
Thu, 6 Aug 2015 15:33:54 +0000 (11:33 -0400)
committerAri Johnson <ari@theari.com>
Thu, 6 Aug 2015 15:33:54 +0000 (11:33 -0400)
src/info_slave.c

index 84f4486a872aeee3047580a24f771de009d05672..596cd0502d3e9ef3fd3441514cdb6fe0b7514274 100644 (file)
@@ -111,6 +111,7 @@ main(int argc, char *argv[])
   int use_ident, use_dns, timeout;
   socklen_t llen, rlen;
   struct iovec dat[3];
+  int gairesult;
 
   if (argc < 2) {
     fprintf(stderr, "info_slave needs a port number!\n");
@@ -182,18 +183,25 @@ main(int argc, char *argv[])
       continue;
 
     bp = buf;
-    if (getnameinfo(&remote.addr, rlen, host, sizeof host, NULL, 0,
-                   NI_NUMERICHOST | NI_NUMERICSERV) != 0) {
+    if ((gairesult = getnameinfo(&remote.addr, rlen, host, sizeof host, NULL,
+                                0, NI_NUMERICHOST | NI_NUMERICSERV)) != 0) {
       safe_str("Error: getnameinfo(remote): ", buf, &bp);
-      safe_str(strerror(errno), buf, &bp);
+      if (gairesult == EAI_SYSTEM)
+        safe_str(strerror(errno), buf, &bp);
+      else
+        safe_str(gai_strerror(gairesult), buf, &bp);
     } else {
       safe_str(host, buf, &bp);
     }
     safe_chr('^', buf, &bp);
-    if (getnameinfo(&local.addr, llen, NULL, 0, lport, sizeof lport,
-                   NI_NUMERICHOST | NI_NUMERICSERV) != 0) {
+    if ((gairesult = getnameinfo(&local.addr, llen, NULL, 0, lport,
+                                sizeof lport,
+                                NI_NUMERICHOST | NI_NUMERICSERV)) != 0) {
       safe_str("Error: getnameinfo(local): ", buf, &bp);
-      safe_str(strerror(errno), buf, &bp);
+      if (gairesult == EAI_SYSTEM)
+        safe_str(strerror(errno), buf, &bp);
+      else
+        safe_str(gai_strerror(gairesult), buf, &bp);
     } else {
       safe_str(lport, buf, &bp);
     }
@@ -211,10 +219,13 @@ main(int argc, char *argv[])
        ident_free(ident_result);
     }
     if (use_dns) {
-      if (getnameinfo(&remote.addr, rlen, host, sizeof host, NULL, 0,
-                     NI_NUMERICSERV) != 0) {
+      if ((gairesult = getnameinfo(&remote.addr, rlen, host, sizeof host, NULL,
+                                  0, NI_NUMERICSERV) != 0)) {
         safe_str("Error: getnameinfo(local/dns): ", buf, &bp);
-        safe_str(strerror(errno), buf, &bp);
+        if (gairesult == EAI_SYSTEM)
+          safe_str(strerror(errno), buf, &bp);
+        else
+          safe_str(gai_strerror(gairesult), buf, &bp);
       } else {
        safe_str(host, buf, &bp);
       }