summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/nmbd/nmbd.c6
-rw-r--r--source3/smbd/server.c5
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);