changeset 13731:a35c1efcd66d

getaddrinfo: Initialize sockets, to make it work under Windows.
author Simon Josefsson <simon@josefsson.org>
date Sat, 25 Sep 2010 18:48:45 +0200
parents 03260cfd24e5
children b16d13c70a22
files ChangeLog doc/gnulib.texi lib/getaddrinfo.c modules/getaddrinfo tests/test-getaddrinfo.c
diffstat 5 files changed, 15 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-09-25  Simon Josefsson  <simon@josefsson.org>
+
+	* modules/getaddrinfo (Depends-on): Depend on the sockets module.
+	* lib/getaddrinfo.c (use_win32_p): Call gl_sockets_startup to make
+	sure Windows sockets are working before calling getaddrinfo.
+	* tests/test-getaddrinfo.c (main): Don't call WSAStartup here.
+	* doc/gnulib.texi (Windows sockets): Fix typo.
+
 2010-09-25  Bruno Haible  <bruno@clisp.org>
 
 	Tests for module 'regex-quote'.
--- a/doc/gnulib.texi
+++ b/doc/gnulib.texi
@@ -989,7 +989,7 @@
 Windows 2000 does not have getaddrinfo in its @file{WS2_32.DLL}.
 
 Thus, if you want to assume Windows XP or later, you can add
-AC_DEFINE(WINVER, 0x0501) to avoid compiling to (partial) getaddrinfo
+AC_DEFINE(WINVER, 0x0501) to avoid compiling the (partial) getaddrinfo
 implementation.
 
 If you want to support Windows 2000, don't do anything.  The
--- a/lib/getaddrinfo.c
+++ b/lib/getaddrinfo.c
@@ -59,6 +59,9 @@
 # define WIN32_NATIVE
 #endif
 
+/* gl_sockets_startup */
+#include "sockets.h"
+
 #ifdef WIN32_NATIVE
 typedef int (WSAAPI *getaddrinfo_func) (const char*, const char*,
                                         const struct addrinfo*,
@@ -101,6 +104,8 @@
       return 0;
     }
 
+  gl_sockets_startup (SOCKETS_1_1);
+
   return 1;
 }
 #endif
--- a/modules/getaddrinfo
+++ b/modules/getaddrinfo
@@ -17,6 +17,7 @@
 strdup
 servent
 hostent
+sockets
 
 configure.ac:
 gl_GETADDRINFO
--- a/tests/test-getaddrinfo.c
+++ b/tests/test-getaddrinfo.c
@@ -161,25 +161,6 @@
 
 int main (void)
 {
-#if _WIN32
-  {
-    WORD requested;
-    WSADATA data;
-    int err;
-
-    requested = MAKEWORD (1, 1);
-    err = WSAStartup (requested, &data);
-    if (err != 0)
-      return 1;
-
-    if (data.wVersion < requested)
-      {
-        WSACleanup ();
-        return 2;
-      }
-  }
-#endif
-
   return simple (HOST1, SERV1)
     + simple (HOST2, SERV2)
     + simple (HOST3, SERV3)