* fhandler.h (fhandler_socket::fixup_after_exec): Remove inline
implementation. (fhandler_dev_raw::fixup_after_exec): Ditto. * fhandler_raw.cc (fhandler_dev_raw::fixup_after_fork): Don't duplicate buffer on fork to avoid memory leak. (fhandler_dev_raw::fixup_after_exec): New implementation equal to former fixup_after_fork() implementation. * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Do nothing when not using Winsock2. (fhandler_socket::fixup_after_exec): New implementation. (fhandler_socket::set_close_on_exec): Never call set_inheritance().
This commit is contained in:
@ -202,13 +202,24 @@ fhandler_socket::fixup_after_fork (HANDLE parent)
|
||||
}
|
||||
else
|
||||
{
|
||||
#if 0
|
||||
fhandler_base::fixup_after_fork (parent);
|
||||
#endif
|
||||
debug_printf ("Without Winsock 2.0");
|
||||
}
|
||||
if (secret_event)
|
||||
fork_fixup (parent, secret_event, "secret_event");
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_socket::fixup_after_exec (HANDLE parent)
|
||||
{
|
||||
if (!get_close_on_exec ())
|
||||
fixup_after_fork (parent);
|
||||
else
|
||||
closesocket (get_socket ());
|
||||
}
|
||||
|
||||
int
|
||||
fhandler_socket::dup (fhandler_base *child)
|
||||
{
|
||||
@ -447,9 +458,11 @@ fhandler_socket::fcntl (int cmd, void *arg)
|
||||
void
|
||||
fhandler_socket::set_close_on_exec (int val)
|
||||
{
|
||||
#if 0
|
||||
extern WSADATA wsadata;
|
||||
if (wsadata.wVersion < 512) /* < Winsock 2.0 */
|
||||
set_inheritance (get_handle (), val);
|
||||
#endif
|
||||
set_close_on_exec_flag (val);
|
||||
debug_printf ("set close_on_exec for %s to %d", get_name (), val);
|
||||
}
|
||||
|
Reference in New Issue
Block a user