X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/c9ef99dfbb7059c096c4e56c853ef8cc4ca933c9..c683b25ae5c61a90fb78da577fd8d1b92cbe8fd6:/windows/winnet.c diff --git a/windows/winnet.c b/windows/winnet.c index 1c574e31..a5fc3834 100644 --- a/windows/winnet.c +++ b/windows/winnet.c @@ -205,7 +205,10 @@ int sk_startup(int hi, int lo) void sk_init(void) { - winsock2_module = winsock_module = LoadLibrary("WS2_32.DLL"); +#ifndef NO_IPV6 + winsock2_module = +#endif + winsock_module = LoadLibrary("WS2_32.DLL"); if (!winsock_module) { winsock_module = LoadLibrary("WSOCK32.DLL"); } @@ -1470,10 +1473,11 @@ int select_result(WPARAM wParam, LPARAM lParam) #ifndef NO_IPV6 if (isa.ss_family == AF_INET && s->localhost_only && - !ipv4_is_local_addr(((struct sockaddr_in *)&isa)->sin_addr)) { + !ipv4_is_local_addr(((struct sockaddr_in *)&isa)->sin_addr)) #else - if (s->localhost_only && !ipv4_is_local_addr(isa.sin_addr)) { + if (s->localhost_only && !ipv4_is_local_addr(isa.sin_addr)) #endif + { p_closesocket(t); /* dodgy WinSock let nonlocal through */ } else if (plug_accepting(s->plug, (void*)t)) { p_closesocket(t); /* denied or error */ @@ -1569,6 +1573,17 @@ static void sk_tcp_set_frozen(Socket sock, int is_frozen) s->frozen_readable = 0; } +void socket_reselect_all(void) +{ + Actual_Socket s; + int i; + + for (i = 0; (s = index234(sktree, i)) != NULL; i++) { + if (!s->frozen) + do_select(s->s, 1); + } +} + /* * For Plink: enumerate all sockets currently active. */