From: Martin Storsjö Date: Mon, 23 Nov 2009 22:55:12 GMT Subject: [PATCH 1/2] Refactor winsock initialization into a separate function Message-ID: In-Reply-To: Signed-off-by: Martin Storsjo --- compat/mingw.c | 15 ++++++++++++--- 1 files changed, 12 insertions(+), 3 deletions(-) diff --git a/compat/mingw.c b/compat/mingw.c index 15fe33e..f9d82ff 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -903,16 +903,25 @@ char **make_augmented_environ(const char *const *vars) 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); } -- 1.6.4.4