Commit c82e13f1 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

reap exited dns/cpuworkers


svn:r385
parent 2aff21f8
Loading
Loading
Loading
Loading
+1 −1
Changes for configure.in: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -134,7 +134,7 @@ AC_CHECK_HEADERS(unistd.h string.h signal.h netdb.h ctype.h poll.h sys/poll.h sy

dnl These headers are not essential

AC_CHECK_HEADERS(stdint.h sys/types.h inttypes.h)
AC_CHECK_HEADERS(stdint.h sys/types.h inttypes.h sys/wait.h)

AC_CHECK_FUNCS(gettimeofday ftime)

+8 −0
Changes for src/or/main.c: 8 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ static int nfds=0; /* number of connections currently active */

static int please_dumpstats=0; /* whether we should dump stats during the loop */
static int please_fetch_directory=0; /* whether we should fetch a new directory */
static int please_reap_children=0; /* whether we should waitpid for exited children*/

/* private key */
static crypto_pk_env_t *privatekey=NULL;
@@ -527,6 +528,10 @@ static int do_main_loop(void) {
      }
      please_fetch_directory = 0;
    }
    if(please_reap_children) {
      while(waitpid(-1,NULL,WNOHANG)) ; /* keep reaping until no more zombies */
      please_reap_children = 0;
    }
    if(prepare_for_poll(&timeout) < 0) {
      log(LOG_DEBUG,"do_main_loop(): prepare_for_poll failed, exiting.");
      return -1;
@@ -591,6 +596,8 @@ static void catch(int the_signal) {
    case SIGUSR1:
      please_dumpstats = 1;
      break;
    case SIGCHLD:
      please_reap_children = 1;
    default:
      log(LOG_ERR,"Caught signal that we can't handle??");
  }
@@ -845,6 +852,7 @@ int tor_main(int argc, char *argv[]) {
  signal (SIGTERM, catch);
  signal (SIGUSR1, catch); /* to dump stats to stdout */
  signal (SIGHUP,  catch); /* to reload directory */
  signal (SIGCHLD, catch); /* for exiting dns/cpu workers */

  crypto_global_init();
  crypto_seed_rng();
+3 −0
Changes for src/or/or.h: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -36,6 +36,9 @@
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_WAIT_H
#include <sys/wait.h>
#endif
#ifdef HAVE_SYS_FCNTL_H
#include <sys/fcntl.h>
#endif