mosh-server: Ignore signals rather than blocking them
For pselect() we want to mess with the signal mask, and this is closer to our intent anyway.
This commit is contained in:
committed by
Keith Winstein
parent
7fc1aa30a5
commit
6edc04ed1c
+13
-10
@@ -319,12 +319,12 @@ int run_server( const char *desired_ip, const char *desired_port,
|
|||||||
fflush( stdout );
|
fflush( stdout );
|
||||||
|
|
||||||
/* don't let signals kill us */
|
/* don't let signals kill us */
|
||||||
sigset_t signals_to_block;
|
struct sigaction sa;
|
||||||
|
sa.sa_handler = SIG_IGN;
|
||||||
fatal_assert( sigemptyset( &signals_to_block ) == 0 );
|
sa.sa_flags = 0;
|
||||||
fatal_assert( sigaddset( &signals_to_block, SIGHUP ) == 0 );
|
fatal_assert( 0 == sigfillset( &sa.sa_mask ) );
|
||||||
fatal_assert( sigaddset( &signals_to_block, SIGPIPE ) == 0 );
|
fatal_assert( 0 == sigaction( SIGHUP, &sa, NULL ) );
|
||||||
fatal_assert( sigprocmask( SIG_BLOCK, &signals_to_block, NULL ) == 0 );
|
fatal_assert( 0 == sigaction( SIGPIPE, &sa, NULL ) );
|
||||||
|
|
||||||
struct termios child_termios;
|
struct termios child_termios;
|
||||||
|
|
||||||
@@ -388,10 +388,13 @@ int run_server( const char *desired_ip, const char *desired_port,
|
|||||||
stdout = fdopen( STDOUT_FILENO, "w" );
|
stdout = fdopen( STDOUT_FILENO, "w" );
|
||||||
stderr = fdopen( STDERR_FILENO, "w" );
|
stderr = fdopen( STDERR_FILENO, "w" );
|
||||||
|
|
||||||
/* unblock signals */
|
/* reenable signals */
|
||||||
sigset_t signals_to_block;
|
struct sigaction sa;
|
||||||
fatal_assert( sigemptyset( &signals_to_block ) == 0 );
|
sa.sa_handler = SIG_DFL;
|
||||||
fatal_assert( sigprocmask( SIG_SETMASK, &signals_to_block, NULL ) == 0 );
|
sa.sa_flags = 0;
|
||||||
|
fatal_assert( 0 == sigfillset( &sa.sa_mask ) );
|
||||||
|
fatal_assert( 0 == sigaction( SIGHUP, &sa, NULL ) );
|
||||||
|
fatal_assert( 0 == sigaction( SIGPIPE, &sa, NULL ) );
|
||||||
|
|
||||||
/* close server-related file descriptors */
|
/* close server-related file descriptors */
|
||||||
delete network;
|
delete network;
|
||||||
|
|||||||
Reference in New Issue
Block a user