Report the errno set by getifaddrs(3) if the setup for AI_ADDRCONFIG fails,
rather than a non-informative EAI_FAIL.  Compare to -1 for error detection
while here.

Eric.


Index: asr/getaddrinfo_async.c
===================================================================
RCS file: /cvs/src/lib/libc/asr/getaddrinfo_async.c,v
retrieving revision 1.50
diff -u -p -r1.50 getaddrinfo_async.c
--- asr/getaddrinfo_async.c     16 Dec 2015 16:32:30 -0000      1.50
+++ asr/getaddrinfo_async.c     20 Feb 2017 20:09:25 -0000
@@ -191,8 +191,9 @@ getaddrinfo_async_run(struct asr_query *
 
                /* Restrict result set to configured address families */
                if (ai->ai_flags & AI_ADDRCONFIG) {
-                       if (addrconfig_setup(as) != 0) {
-                               ar->ar_gai_errno = EAI_FAIL;
+                       if (addrconfig_setup(as) == -1) {
+                               ar->ar_errno = errno;
+                               ar->ar_gai_errno = EAI_SYSTEM;
                                async_set_state(as, ASR_STATE_HALT);
                                break;
                        }
@@ -679,7 +680,7 @@ addrconfig_setup(struct asr_query *as)
        struct sockaddr_in      *sinp;
        struct sockaddr_in6     *sin6p;
 
-       if (getifaddrs(&ifa0) != 0)
+       if (getifaddrs(&ifa0) == -1)
                return (-1);
 
        as->as.ai.flags |= ASYNC_NO_INET | ASYNC_NO_INET6;

Reply via email to