Let pty slave detect closure of last master handle
* fhandler_tty.cc (fhandler_pty_master::close): Add code to make slave detect closure of master. Fix typo in error message. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
a34ebbad28
commit
32fd5b0fe1
|
@ -1,3 +1,8 @@
|
|||
2015-03-12 Takashi Yano <takashi.yano@nifty.ne.jp>
|
||||
|
||||
* fhandler_tty.cc (fhandler_pty_master::close): Add code to make slave
|
||||
detect closure of master. Fix typo in error message.
|
||||
|
||||
2015-03-11 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* include/cygwin/types.h: Include <sys/_timespec.h>
|
||||
|
|
|
@ -1317,17 +1317,23 @@ fhandler_pty_master::close ()
|
|||
}
|
||||
}
|
||||
|
||||
fhandler_pty_common::close ();
|
||||
|
||||
/* Check if the last master handle has been closed. If so, set
|
||||
input_available_event to wake up potentially waiting slaves. */
|
||||
if (!PeekNamedPipe (from_master, NULL, 0, NULL, NULL, NULL)
|
||||
&& GetLastError () == ERROR_BROKEN_PIPE)
|
||||
SetEvent (input_available_event);
|
||||
|
||||
if (!ForceCloseHandle (from_master))
|
||||
termios_printf ("error closing from_master %p, %E", from_master);
|
||||
if (!ForceCloseHandle (to_master))
|
||||
termios_printf ("error closing from_master %p, %E", to_master);
|
||||
termios_printf ("error closing to_master %p, %E", to_master);
|
||||
from_master = to_master = NULL;
|
||||
ForceCloseHandle (echo_r);
|
||||
ForceCloseHandle (echo_w);
|
||||
echo_r = echo_w = NULL;
|
||||
|
||||
fhandler_pty_common::close ();
|
||||
|
||||
if (have_execed || get_ttyp ()->master_pid != myself->pid)
|
||||
termios_printf ("not clearing: %d, master_pid %d", have_execed, get_ttyp ()->master_pid);
|
||||
if (!ForceCloseHandle (input_available_event))
|
||||
|
|
Loading…
Reference in New Issue