Index: m4/getaddrinfo.m4 =================================================================== RCS file: /cvsroot/gnulib/gnulib/m4/getaddrinfo.m4,v retrieving revision 1.2 diff -u -r1.2 getaddrinfo.m4 --- m4/getaddrinfo.m4 23 Jan 2005 08:06:57 -0000 1.2 +++ m4/getaddrinfo.m4 9 May 2005 22:34:21 -0000 @@ -6,6 +6,7 @@ AC_DEFUN([gl_GETADDRINFO], [ + AC_SEARCH_LIBS(getaddrinfo, nsl socket) AC_REPLACE_FUNCS(getaddrinfo) gl_PREREQ_GETADDRINFO ]) Index: lib/getaddrinfo.c =================================================================== RCS file: /cvsroot/gnulib/gnulib/lib/getaddrinfo.c,v retrieving revision 1.1 diff -u -r1.1 getaddrinfo.c --- lib/getaddrinfo.c 10 Nov 2004 14:53:00 -0000 1.1 +++ lib/getaddrinfo.c 9 May 2005 22:34:21 -0000 @@ -74,15 +74,11 @@ if (hints && !validate_family (hints->ai_family)) return EAI_FAMILY; - if (hints && hints->ai_socktype) - /* FIXME: Support more socket types. */ - return EAI_SOCKTYPE; - if (hints && - hints->ai_protocol != SOCK_STREAM && hints->ai_protocol != SOCK_DGRAM) - /* FIXME: Support other protocols. */ - return EAI_SERVICE; /* FIXME: Better return code? */ - + hints->ai_socktype != SOCK_STREAM && hints->ai_socktype != SOCK_DGRAM) + /* FIXME: Support other socktype. */ + return EAI_SOCKTYPE; /* FIXME: Better return code? */ + if (!nodename) /* FIXME: Support server bind mode. */ return EAI_NONAME; @@ -90,7 +86,7 @@ if (servname) { const char *proto = - (hints && hints->ai_protocol == SOCK_DGRAM) ? "udp" : "tcp"; + (hints && hints->ai_socktype == SOCK_DGRAM) ? "udp" : "tcp"; /* FIXME: Use getservbyname_r if available. */ se = getservbyname (servname, proto); @@ -171,6 +167,8 @@ return EAI_NODATA; } + tmp->ai_protocol = (hints) ? hints->ai_protocol : 0; + tmp->ai_socktype = (hints) ? hints->ai_socktype : 0; tmp->ai_addr->sa_family = he->h_addrtype; /* FIXME: If more than one address, create linked list of addrinfo's. */