commit abb1abeb772c0876655c066d396f92ee46292c62 from: Florian Westphal date: Wed Mar 26 20:31:13 2008 UTC Do not exit unconditionally if config file cannot be opened ngircd will exit if the config file cannot be opened. While thats okay if ngircd starts up for the first time, it isn't when we are re-reading the config file after a /REHASH or SIGHUP. commit - ab1f48a34668295275b794f1cc09839acc445c2b commit + abb1abeb772c0876655c066d396f92ee46292c62 blob - b562638204152e42f39ed2fc61cfbb8daafb81a3 blob + 736ef7c18ecab160716c5a377f742a5c73fd2ec6 --- ChangeLog +++ ChangeLog @@ -12,6 +12,7 @@ ngIRCd HEAD + - Do not exit on SIGHUP or /REHASH if the config file cannot opened. - Add IPv6 support. - Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X. - Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and @@ -759,4 +760,4 @@ ngIRCd 0.0.1, 31.12.2001 -- -$Id: ChangeLog,v 1.344 2008/02/26 22:05:42 fw Exp $ +$Id: ChangeLog,v 1.345 2008/03/18 20:12:47 fw Exp $ blob - 3239dd140d70692acb90a6528a1b170d642d15a6 blob + 0f6686221696f463eccd11097aa488fd8121bcbc --- src/ngircd/conf.c +++ src/ngircd/conf.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: conf.c,v 1.104 2008/02/26 22:04:17 fw Exp $"; +static char UNUSED id[] = "$Id: conf.c,v 1.105 2008/03/18 20:12:47 fw Exp $"; #include "imp.h" #include @@ -57,7 +57,7 @@ static int New_Server_Idx; static void Set_Defaults PARAMS(( bool InitServers )); -static void Read_Config PARAMS(( void )); +static bool Read_Config PARAMS(( bool ngircd_starting )); static void Validate_Config PARAMS(( bool TestOnly, bool Rehash )); static void Handle_GLOBAL PARAMS(( int Line, char *Var, char *Arg )); @@ -134,21 +134,21 @@ ports_parse(array *a, int Line, char *Arg) GLOBAL void Conf_Init( void ) { - Set_Defaults( true ); - Read_Config( ); + Read_Config( true ); Validate_Config(false, false); } /* Config_Init */ -GLOBAL void +GLOBAL bool Conf_Rehash( void ) { - Set_Defaults( false ); - Read_Config( ); + if (!Read_Config(false)) + return false; Validate_Config(false, true); /* Update CLIENT structure of local server */ Client_SetInfo(Client_ThisServer(), Conf_ServerInfo); + return true; } /* Config_Rehash */ @@ -163,9 +163,8 @@ Conf_Test( void ) char *topic; Use_Log = false; - Set_Defaults( true ); - Read_Config( ); + Read_Config( true ); Validate_Config(true, false); /* If stdin and stdout ("you can read our nice message and we can @@ -460,8 +459,8 @@ Set_Defaults( bool InitServers ) } /* Set_Defaults */ -static void -Read_Config( void ) +static bool +Read_Config( bool ngircd_starting ) { /* Read configuration file. */ @@ -476,10 +475,14 @@ Read_Config( void ) /* No configuration file found! */ Config_Error( LOG_ALERT, "Can't read configuration \"%s\": %s", NGIRCd_ConfFile, strerror( errno )); + if (!ngircd_starting) + return false; Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME ); exit( 1 ); } + Set_Defaults( ngircd_starting ); + Config_Error( LOG_INFO, "Reading configuration from \"%s\" ...", NGIRCd_ConfFile ); /* Clean up server configuration structure: mark all already @@ -626,6 +629,7 @@ Read_Config( void ) exit( 1 ); } } + return true; } /* Read_Config */ blob - b6a5a2acf87766d85fb0265141ad4dd82c3623be blob + d505f3390db01625f259d565bf7c9dffc4cc26dd --- src/ngircd/conf.h +++ src/ngircd/conf.h @@ -8,7 +8,7 @@ * (at your option) any later version. * Please read the file COPYING, README and AUTHORS for more information. * - * $Id: conf.h,v 1.48 2008/02/26 22:04:17 fw Exp $ + * $Id: conf.h,v 1.49 2008/03/18 20:12:47 fw Exp $ * * Configuration management (header) */ @@ -148,7 +148,7 @@ GLOBAL int Conf_MaxConnectionsIP; GLOBAL unsigned int Conf_MaxNickLength; GLOBAL void Conf_Init PARAMS((void)); -GLOBAL void Conf_Rehash PARAMS((void)); +GLOBAL bool Conf_Rehash PARAMS((void)); GLOBAL int Conf_Test PARAMS((void)); GLOBAL void Conf_UnsetServer PARAMS(( CONN_ID Idx )); blob - 73c9a15138f7b6e198b0a166c976d767216a846f blob + bb88b3b97fca68641c04c6095822fa828863346d --- src/ngircd/ngircd.c +++ src/ngircd/ngircd.c @@ -12,7 +12,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: ngircd.c,v 1.118 2008/02/26 22:04:17 fw Exp $"; +static char UNUSED id[] = "$Id: ngircd.c,v 1.119 2008/03/18 20:12:47 fw Exp $"; /** * @file @@ -432,16 +432,17 @@ NGIRCd_Rehash( void ) Log( LOG_NOTICE|LOG_snotice, "Re-reading configuration NOW!" ); NGIRCd_SignalRehash = false; - /* Close down all listening sockets */ - Conn_ExitListeners( ); - /* Remember old server name and nick name length */ strlcpy( old_name, Conf_ServerName, sizeof old_name ); old_nicklen = Conf_MaxNickLength; /* Re-read configuration ... */ - Conf_Rehash( ); + if (!Conf_Rehash( )) + return; + /* Close down all listening sockets */ + Conn_ExitListeners( ); + /* Recover old server name and nick name length: these values can't * be changed during run-time */ if (strcmp(old_name, Conf_ServerName) != 0 ) {