diff options
-rw-r--r-- | source3/nmbd/nmbd.c | 6 | ||||
-rw-r--r-- | source3/smbd/server.c | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c index 5b9a00aad0..f772788341 100644 --- a/source3/nmbd/nmbd.c +++ b/source3/nmbd/nmbd.c @@ -686,6 +686,12 @@ static void usage(char *pname) fault_setup((void (*)(void *))fault_continue ); + /* POSIX demands that signals are inherited. If the invoking process has + * these signals masked, we will have problems, as we won't recieve them. */ + BlockSignals(False, SIGHUP); + BlockSignals(False, SIGUSR1); + BlockSignals(False, SIGTERM); + CatchSignal( SIGHUP, SIGNAL_CAST sig_hup ); CatchSignal( SIGTERM, SIGNAL_CAST sig_term ); diff --git a/source3/smbd/server.c b/source3/smbd/server.c index c895972b0e..a13f34d506 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -651,6 +651,11 @@ static void usage(char *pname) BlockSignals(True,SIGUSR2); #endif + /* POSIX demands that signals are inherited. If the invoking process has + * these signals masked, we will have problems, as we won't recieve them. */ + BlockSignals(False, SIGHUP); + BlockSignals(False, SIGUSR1); + /* we want total control over the permissions on created files, so set our umask to 0 */ umask(0); |