Ok, based on the online docs for AIX'es getservbyport_r() I adjusted to code
authorDaniel Stenberg <daniel@haxx.se>
Mon, 3 Oct 2005 10:12:06 +0000 (10:12 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 3 Oct 2005 10:12:06 +0000 (10:12 +0000)
to do (what I believe is) "right". See docs on:
http://publib.boulder.ibm.com/infocenter/pseries/index.jsp?topic=/com.ibm.aix.doc/libs/commtrf2/getservbyport_r.htm

ares/ares_getnameinfo.c

index ac54f13..236d82b 100644 (file)
@@ -269,6 +269,7 @@ static char *lookup_service(unsigned short port, int flags,
           char buf[4096];
           int len = 4096;
 #elif GETSERVBYPORT_R_ARGS == 4
+          struct servent ret;
           struct servent_data sed;
 #endif
           if (flags & ARES_NI_UDP)
@@ -287,7 +288,7 @@ static char *lookup_service(unsigned short port, int flags,
 #elif GETSERVBYPORT_R_ARGS == 5
           se = getservbyport_r(port, proto, se, buf, len);
 #elif GETSERVBYPORT_R_ARGS == 4
-          se = &sed;
+          se = &ret;
           if (getservbyport_r(port, proto, se, &sed) == -1)
             se = NULL;
 #else