* fhandler_socket.cc (fhandler_socket::fixup_after_fork): Reset

inheritance for duplicated socket.
This commit is contained in:
Corinna Vinschen 2006-01-23 15:10:57 +00:00
parent cfd86743ff
commit 543c43d84d
2 changed files with 15 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2006-01-23 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::fixup_after_fork): Reset
inheritance for duplicated socket.
2006-01-20 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump API minor number to 151.

View File

@ -424,7 +424,16 @@ fhandler_socket::fixup_after_fork (HANDLE parent)
}
else
{
debug_printf ("WSASocket went fine new_sock %p, old_sock %p", new_sock, get_io_handle ());
debug_printf ("WSASocket went fine new_sock %p, old_sock %p", new_sock, get_socket ());
/* Go figure! Even though the original socket was not inheritable,
the duplicated socket is inheritable again. This can lead to all
sorts of trouble, apparently. Note that there's no way to prevent
this on 9x, not even by trying to reset socket inheritance using
DuplicateHandle and closing the original socket. */
if (wincap.has_set_handle_information ())
SetHandleInformation ((HANDLE) new_sock, HANDLE_FLAG_INHERIT, 0);
set_io_handle ((HANDLE) new_sock);
}
}