* DevNotes: Add entry cgf-000022.
* cygtls.h (_cygtls::func): Define as a sa_sigaction style function. * exceptions.cc (sig_handle_tty_stop): Ditto. (_cygtls::interrupt_setup): Fix coercion to accommodate 'func' change. (ctrl_c_handler): Use tty kill_pgrp to send a signal. (sigpacket::process): Don't process sigflush here. (_cygtls::call_signal_handler): Reorganize to avoid a race. Always call sa_sigaction style function. * fhandler_termios.cc (is_flush_sig): Define new function. (tty_min::kill_pgrp): Handle tty flush when signal detected. (fhandler_termios::bg_check): Be slightly more paranoid about checking for valid tty. (fhandler_termios::sigflush): Don't flush unless tty owner. * fhandler_tty.cc (fhandler_pty_slave::ioctl): Use tty kill_pgrp to send signal. (fhandler_pty_master::ioctl): Ditto. * signal.cc (killsys): Delete definition. * sigproc.h (killsys): Delete declaration. * include/cygwin/signal.h (siginfo_t): Simplify union/struct nesting slightly. Implement mechanism to allow cygwin data passing.
This commit is contained in:
@@ -1,3 +1,18 @@
|
||||
2013-01-31 cgf-000022
|
||||
|
||||
While researching the lftp behavior reported here:
|
||||
|
||||
http://cygwin.com/ml/cygwin/2013-01/msg00390.html
|
||||
|
||||
after a frenzy of rewriting sigflush handling to avoid blocking in the
|
||||
signal thread (which is now and should ever have been illegal), it
|
||||
dawned on me that we're not supposed to be flushing the tty input buffer
|
||||
every time a signal is received. We're supposed to do this only when
|
||||
the user hits a character (e.g., CTRL-C) which initiates a signal
|
||||
action. So, I removed sigflush from sigpacket::process and moved it to
|
||||
tc ()->kill_pgrp (). This function should only be called to send
|
||||
signals related to the tty so this should have the desired effect.
|
||||
|
||||
2013-01-11 cgf-000021
|
||||
|
||||
Apparently I got the signal handling semantics of select() wrong again
|
||||
|
Reference in New Issue
Block a user