summaryrefslogtreecommitdiff
path: root/src/backend/libpq/pqsignal.c
diff options
context:
space:
mode:
authorJan Wieck2001-09-07 16:12:49 +0000
committerJan Wieck2001-09-07 16:12:49 +0000
commit7e26a8241d081ff7ba83f3093726639b9b6d1122 (patch)
treedcd54e3cec412395f84b01b3ca55ec48a27d451d /src/backend/libpq/pqsignal.c
parentd9044b56379da6097310ebed45fb9e1a4db003af (diff)
Enable SIGTERM and SIGQUIT during client authentication so
the postmaster can kill the forked off processes when shutdown is requested. Jan
Diffstat (limited to 'src/backend/libpq/pqsignal.c')
-rw-r--r--src/backend/libpq/pqsignal.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/backend/libpq/pqsignal.c b/src/backend/libpq/pqsignal.c
index 9bdcd27b703..028db104089 100644
--- a/src/backend/libpq/pqsignal.c
+++ b/src/backend/libpq/pqsignal.c
@@ -9,7 +9,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/libpq/pqsignal.c,v 1.21 2001/08/24 14:07:49 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/pqsignal.c,v 1.22 2001/09/07 16:12:48 wieck Exp $
*
* NOTES
* This shouldn't be in libpq, but the monitor and some other
@@ -61,6 +61,7 @@ pqinitmask(void)
#ifdef HAVE_SIGPROCMASK
sigemptyset(&UnBlockSig);
sigfillset(&BlockSig);
+ sigfillset(&AuthBlockSig);
/*
* Unmark those signals that should never be blocked. Some of these
@@ -69,27 +70,41 @@ pqinitmask(void)
*/
#ifdef SIGTRAP
sigdelset(&BlockSig, SIGTRAP);
+ sigdelset(&AuthBlockSig, SIGTRAP);
#endif
#ifdef SIGABRT
sigdelset(&BlockSig, SIGABRT);
+ sigdelset(&AuthBlockSig, SIGABRT);
#endif
#ifdef SIGILL
sigdelset(&BlockSig, SIGILL);
+ sigdelset(&AuthBlockSig, SIGILL);
#endif
#ifdef SIGFPE
sigdelset(&BlockSig, SIGFPE);
+ sigdelset(&AuthBlockSig, SIGFPE);
#endif
#ifdef SIGSEGV
sigdelset(&BlockSig, SIGSEGV);
+ sigdelset(&AuthBlockSig, SIGSEGV);
#endif
#ifdef SIGBUS
sigdelset(&BlockSig, SIGBUS);
+ sigdelset(&AuthBlockSig, SIGBUS);
#endif
#ifdef SIGSYS
sigdelset(&BlockSig, SIGSYS);
+ sigdelset(&AuthBlockSig, SIGSYS);
#endif
#ifdef SIGCONT
sigdelset(&BlockSig, SIGCONT);
+ sigdelset(&AuthBlockSig, SIGCONT);
+#endif
+#ifdef SIGTERM
+ sigdelset(&AuthBlockSig, SIGTERM);
+#endif
+#ifdef SIGQUIT
+ sigdelset(&AuthBlockSig, SIGQUIT);
#endif
#else
UnBlockSig = 0;
@@ -98,6 +113,10 @@ pqinitmask(void)
sigmask(SIGINT) | sigmask(SIGUSR1) |
sigmask(SIGUSR2) | sigmask(SIGCHLD) |
sigmask(SIGWINCH) | sigmask(SIGFPE);
+ AuthBlockSig = sigmask(SIGHUP) | sigmask(SIGALRM) |
+ sigmask(SIGINT) | sigmask(SIGUSR1) |
+ sigmask(SIGUSR2) | sigmask(SIGCHLD) |
+ sigmask(SIGWINCH) | sigmask(SIGFPE);
#endif
}