/*
- * $Id: asp_getsess.c,v 1.7.8.1 2003-11-11 08:48:33 didg Exp $
+ * $Id: asp_getsess.c,v 1.7.8.2 2003-11-13 15:39:02 didg Exp $
*
* Copyright (c) 1990,1996 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
switch ((pid = fork())) {
case 0 : /* child */
- signal(SIGTERM, SIG_DFL);
- signal(SIGHUP, SIG_DFL);
+ server_reset_signal();
/* free/close some things */
for (i = 0; i < children->nsessions; i++ ) {
if ( asp_ac[i] != NULL )
/*
- * $Id: dsi_tcp.c,v 1.9.10.2 2003-11-11 08:48:33 didg Exp $
+ * $Id: dsi_tcp.c,v 1.9.10.3 2003-11-13 15:39:02 didg Exp $
*
* Copyright (c) 1997, 1998 Adrian Sun (asun@zoology.washington.edu)
* All rights reserved. See COPYRIGHT.
u_int8_t block[DSI_BLOCKSIZ];
size_t stored;
- /* reset a couple signals */
- signal(SIGTERM, SIG_DFL);
- signal(SIGHUP, SIG_DFL);
+ /* reset signals */
+ server_reset_signal();
/* install an alarm to deal with non-responsive connections */
newact.sa_handler = timeout_handler;
/*
- * $Id: server_child.c,v 1.7.4.1.2.1 2003-11-11 08:48:33 didg Exp $
+ * $Id: server_child.c,v 1.7.4.1.2.2 2003-11-13 15:39:02 didg Exp $
*
* Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
* All rights reserved. See COPYRIGHT.
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
#endif /* HAVE_SYS_WAIT_H */
+#include <sys/time.h>
+
#ifndef WEXITSTATUS
#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
#endif /* ! WEXITSTATUS */
}
}
}
+
+/* ---------------------------
+ * reset children signals
+*/
+void server_reset_signal(void)
+{
+ struct sigaction sv;
+ sigset_t sigs;
+ const struct itimerval none = {{0, 0}, {0, 0}};
+
+ setitimer(ITIMER_REAL, &none, NULL);
+ memset(&sv, 0, sizeof(sv));
+ sv.sa_handler = SIG_DFL;
+ sigemptyset( &sv.sa_mask );
+
+ sigaction(SIGALRM, &sv, 0 );
+ sigaction(SIGHUP, &sv, 0 );
+ sigaction(SIGTERM, &sv, 0 );
+ sigaction(SIGUSR1, &sv, 0 );
+ sigaction(SIGCHLD, &sv, 0 );
+
+ sigemptyset(&sigs);
+ sigaddset(&sigs, SIGALRM);
+ sigaddset(&sigs, SIGHUP);
+ sigaddset(&sigs, SIGUSR1);
+ sigaddset(&sigs, SIGCHLD);
+ sigprocmask(SIG_UNBLOCK, &sigs, NULL);
+
+}