make this work with pre-EAI_OVERFLOW glibc [#300620]
authorDan Winship <danw@src.gnome.org>
Fri, 15 Apr 2005 13:47:48 +0000 (13:47 +0000)
committerDan Winship <danw@src.gnome.org>
Fri, 15 Apr 2005 13:47:48 +0000 (13:47 +0000)
* libsoup/soup-dns.c (resolve_name): make this work with
pre-EAI_OVERFLOW glibc [#300620]

ChangeLog
libsoup/soup-dns.c

index 845984c..1ae3dfd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-04-15  Dan Winship  <danw@novell.com>
+
+       * libsoup/soup-dns.c (resolve_name): make this work with
+       pre-EAI_OVERFLOW glibc [#300620]
+
 2005-04-12  Dan Winship  <danw@novell.com>
 
        * configure.in: Remove the various gethostbyname_r checks and just
index 3a98c0f..4bf282d 100644 (file)
@@ -269,15 +269,21 @@ static void
 resolve_name (SoupDNSCacheEntry *entry)
 {
 #ifdef HAVE_GETNAMEINFO
-       int retval, len = 128;
+       int retval, len = 0;
        char *name = NULL;
 
        do {
+               len += 128;
                name = g_realloc (name, len);
                retval = getnameinfo (entry->sockaddr, SOUP_DNS_SOCKADDR_LEN (entry->sockaddr),
                                      name, len, NULL, 0, NI_NAMEREQD);
-               len += 128;
-       } while (retval == EAI_OVERFLOW);
+       } while (
+#ifdef EAI_OVERFLOW
+               retval == EAI_OVERFLOW
+#else
+               strlen (name) == len - 1
+#endif
+               );
 
        if (retval == 0)
                entry->hostname = name;