From: Gurusamy Sarathy Date: Wed, 5 Jul 2000 22:08:19 +0000 (+0000) Subject: winsock cleanup never done on Windows (leads to handle leaks) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=b73db59cdbd5ebb7813123c6082df2b8933fe5e0;p=p5sagit%2Fp5-mst-13.2.git winsock cleanup never done on Windows (leads to handle leaks) p4raw-id: //depot/perl@6317 --- diff --git a/win32/perllib.c b/win32/perllib.c index 857aada..fae3346 100644 --- a/win32/perllib.c +++ b/win32/perllib.c @@ -338,6 +338,10 @@ RunPerl(int argc, char **argv, char **env) EXTERN_C void set_w32_module_name(void); +EXTERN_C void +EndSockets(void); + + #ifdef __MINGW32__ EXTERN_C /* GCC in C++ mode mangles the name, otherwise */ #endif @@ -367,6 +371,7 @@ DllMain(HANDLE hModule, /* DLL module handle */ * process termination or call to FreeLibrary. */ case DLL_PROCESS_DETACH: + EndSockets(); break; /* The attached process creates a new thread. */ diff --git a/win32/win32sck.c b/win32/win32sck.c index 93d501e..cc96688 100644 --- a/win32/win32sck.c +++ b/win32/win32sck.c @@ -56,12 +56,6 @@ } STMT_END #endif -#define EndSockets() \ - STMT_START { \ - if (wsock_started) \ - WSACleanup(); \ - } STMT_END - #define SOCKET_TEST(x, y) \ STMT_START { \ StartSockets(); \ @@ -77,6 +71,13 @@ static struct servent* win32_savecopyservent(struct servent*d, static int wsock_started = 0; +EXTERN_C void +EndSockets(void) +{ + if (wsock_started) + WSACleanup(); +} + void start_sockets(void) {