fix getaddrinfo error code for non-numeric service with AI_NUMERICSERV
authorA. Wilcox <AWilcox@Wilcox-Tech.com>
Thu, 14 Sep 2017 20:53:21 +0000 (15:53 -0500)
committerRich Felker <dalias@aerifal.cx>
Fri, 10 Nov 2017 01:15:02 +0000 (20:15 -0500)
If AI_NUMERICSERV is specified and a numeric service was not provided,
POSIX mandates getaddrinfo return EAI_NONAME. EAI_SERVICE is only for
services that cannot be used on the specified socket type.

src/network/lookup_serv.c

index 66ebaea..403b12a 100644 (file)
@@ -64,7 +64,7 @@ int __lookup_serv(struct service buf[static MAXSERVS], const char *name, int pro
                return cnt;
        }
 
-       if (flags & AI_NUMERICSERV) return EAI_SERVICE;
+       if (flags & AI_NUMERICSERV) return EAI_NONAME;
 
        size_t l = strlen(name);