diff --git a/compat/mingw.c b/compat/mingw.c
index 15fe33eaa0f220e94131006bca89effd14d6d058..f9d82ff103cd096ac328d221c8b1b5e7a4e7d330 100644 (file)
--- a/compat/mingw.c
+++ b/compat/mingw.c
return env;
}
-/* this is the first function to call into WS_32; initialize it */
-#undef gethostbyname
-struct hostent *mingw_gethostbyname(const char *host)
+static void ensure_socket_initialization(void)
{
WSADATA wsa;
+ static int initialized = 0;
+
+ if (initialized)
+ return;
if (WSAStartup(MAKEWORD(2,2), &wsa))
die("unable to initialize winsock subsystem, error %d",
WSAGetLastError());
atexit((void(*)(void)) WSACleanup);
+ initialized = 1;
+}
+
+#undef gethostbyname
+struct hostent *mingw_gethostbyname(const char *host)
+{
+ ensure_socket_initialization();
return gethostbyname(host);
}