X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Fngircd.c;h=10aa1a064996752d941026b05f729a2f3b03c52b;hp=eb40e7e3a773192eb6fd257857de2bbd45ff0b1b;hb=03d971d99481244e7039bc960cfb962795fbe905;hpb=020c6d8bb3fd3e10a3cc0020f15a4df958ca82e8 diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index eb40e7e3..10aa1a06 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -1,6 +1,6 @@ /* * ngIRCd -- The Next Generation IRC Daemon - * Copyright (c)2001 by Alexander Barton (alex@barton.de) + * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) * * Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen * der GNU General Public License (GPL), wie von der Free Software Foundation @@ -9,11 +9,14 @@ * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. * - * $Id: ngircd.c,v 1.15 2001/12/31 02:18:51 alex Exp $ + * $Id: ngircd.c,v 1.16 2002/01/02 02:44:37 alex Exp $ * * ngircd.c: Hier beginnt alles ;-) * * $Log: ngircd.c,v $ + * Revision 1.16 2002/01/02 02:44:37 alex + * - neue Defines fuer max. Anzahl Server und Operatoren. + * * Revision 1.15 2001/12/31 02:18:51 alex * - viele neue Befehle (WHOIS, ISON, OPER, DIE, RESTART), * - neuen Header "defines.h" mit (fast) allen Konstanten. @@ -79,6 +82,8 @@ #include #include #include +#include +#include #include #include "channel.h" @@ -162,6 +167,7 @@ LOCAL VOID Initialize_Signal_Handler( VOID ) sigaction( SIGINT, &saction, NULL ); sigaction( SIGQUIT, &saction, NULL ); sigaction( SIGTERM, &saction, NULL); + sigaction( SIGCHLD, &saction, NULL); /* einige Signale ignorieren */ saction.sa_handler = SIG_IGN; @@ -184,6 +190,10 @@ LOCAL VOID Signal_Handler( INT Signal ) Log( LOG_WARNING, "Got signal %d, terminating now ...", Signal ); NGIRCd_Quit = TRUE; break; + case SIGCHLD: + /* Child-Prozess wurde beendet. Zombies vermeiden: */ + while( waitpid( -1, NULL, WNOHANG ) > 0); + break; default: /* unbekanntes bzw. unbehandeltes Signal */ Log( LOG_NOTICE, "Got signal %d! Ignored.", Signal );