commit - 1fe17e246cba4ee2f4349196c544296790ab5d55
commit + ef3dbf96eb977c5296e092c6a48f8a3ca51598e2
blob - 03e2905cc5af0e1afa70f4299627d0cfbe43a373
blob + e4851a933b42950b5b0cfcd7022a8403cc345057
--- src/ngircd/conn.c
+++ src/ngircd/conn.c
#ifdef ZEROCONF
Rendezvous_Handler();
#endif
-
- /* Should the configuration be reloaded? */
- if (NGIRCd_SignalRehash)
- NGIRCd_Rehash();
/* Check configured servers and established links */
Check_Servers();
blob - a927b1951035aa5b34c0524c263cb6df2cda8c2c
blob + 048c4f8b099f335caf6d339655e85bc4bc24dd10
--- src/ngircd/irc-oper.c
+++ src/ngircd/irc-oper.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <signal.h>
#include "ngircd.h"
#include "conn-func.h"
if( Req->argc != 0 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
Log( LOG_NOTICE|LOG_snotice, "Got REHASH command from \"%s\" ...", Client_Mask( Client ));
- NGIRCd_SignalRehash = true;
-
+ raise(SIGHUP);
+
return CONNECTED;
} /* IRC_REHASH */
blob - de0b490dab81a5aa025a859ac3801c17ffb602c8
blob + 2fd60ef8713295d08bd9276110539b65e97697c6
--- src/ngircd/ngircd.c
+++ src/ngircd/ngircd.c
umask( 0077 );
- NGIRCd_SignalQuit = NGIRCd_SignalRestart = NGIRCd_SignalRehash = false;
+ NGIRCd_SignalQuit = NGIRCd_SignalRestart = false;
NGIRCd_Passive = false;
#ifdef DEBUG
NGIRCd_Debug = false;
NGIRCd_Start = time( NULL );
(void)strftime( NGIRCd_StartStr, 64, "%a %b %d %Y at %H:%M:%S (%Z)", localtime( &NGIRCd_Start ));
- NGIRCd_SignalRehash = false;
NGIRCd_SignalRestart = false;
NGIRCd_SignalQuit = false;
/**
- * Reload the server configuration file.
- */
-GLOBAL void
-NGIRCd_Rehash( void )
-{
- char old_name[CLIENT_ID_LEN];
- unsigned old_nicklen;
-
- Log( LOG_NOTICE|LOG_snotice, "Re-reading configuration NOW!" );
- NGIRCd_SignalRehash = false;
-
- /* Remember old server name and nick name length */
- strlcpy( old_name, Conf_ServerName, sizeof old_name );
- old_nicklen = Conf_MaxNickLength;
-
- /* Re-read configuration ... */
- 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 ) {
- strlcpy(Conf_ServerName, old_name, sizeof Conf_ServerName);
- Log(LOG_ERR, "Can't change \"ServerName\" on runtime! Ignored new name.");
- }
- if (old_nicklen != Conf_MaxNickLength) {
- Conf_MaxNickLength = old_nicklen;
- Log(LOG_ERR, "Can't change \"MaxNickLength\" on runtime! Ignored new value.");
- }
-
- /* Create new pre-defined channels */
- Channel_InitPredefined( );
-
- if (!ConnSSL_InitLibrary())
- Log(LOG_WARNING, "Re-Initializing SSL failed, using old keys");
-
- /* Start listening on sockets */
- Conn_InitListeners( );
-
- /* Sync configuration with established connections */
- Conn_SyncServerStruct( );
-
- Log( LOG_NOTICE|LOG_snotice, "Re-reading of configuration done." );
-} /* NGIRCd_Rehash */
-
-
-/**
* Display copyright and version information of ngIRCd on the console.
*/
static void
blob - bd0aed0a7b5509337a1c3c460d00c43ed4d7f9ca
blob + bd699e505094ddddbbfab2bdc46b23294ae664bf
--- src/ngircd/ngircd.h
+++ src/ngircd/ngircd.h
GLOBAL bool NGIRCd_SignalQuit; /* true: quit server*/
GLOBAL bool NGIRCd_SignalRestart; /* true: restart server */
-GLOBAL bool NGIRCd_SignalRehash; /* true: reload configuration */
GLOBAL char NGIRCd_DebugLevel[2]; /* Debug-Level fuer IRC_VERSION() */
GLOBAL char NGIRCd_ProtoID[COMMAND_LEN];/* Protokoll- und Server-Identifikation */
-GLOBAL void NGIRCd_Rehash PARAMS(( void ));
-
-
#endif
blob - f3ce24feb4935b77d13577ab66e526a7bedb9c81
blob + d03692a2e2cc17539b2ec35c44d7a881977f2af2
--- src/ngircd/sighandlers.c
+++ src/ngircd/sighandlers.c
#include <sys/wait.h>
#include "imp.h"
+#include "conn.h"
+#include "conf-ssl.h"
+#include "channel.h"
+#include "conf.h"
#include "io.h"
#include "log.h"
#include "ngircd.h"
#endif
}
+/**
+ * Reload the server configuration file.
+ */
+static void
+NGIRCd_Rehash( void )
+{
+ char old_name[CLIENT_ID_LEN];
+ unsigned old_nicklen;
+ Log( LOG_NOTICE|LOG_snotice, "Re-reading configuration NOW!" );
+
+ /* Remember old server name and nick name length */
+ strlcpy( old_name, Conf_ServerName, sizeof old_name );
+ old_nicklen = Conf_MaxNickLength;
+
+ /* Re-read configuration ... */
+ 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 ) {
+ strlcpy(Conf_ServerName, old_name, sizeof Conf_ServerName);
+ Log(LOG_ERR, "Can't change \"ServerName\" on runtime! Ignored new name.");
+ }
+ if (old_nicklen != Conf_MaxNickLength) {
+ Conf_MaxNickLength = old_nicklen;
+ Log(LOG_ERR, "Can't change \"MaxNickLength\" on runtime! Ignored new value.");
+ }
+
+ /* Create new pre-defined channels */
+ Channel_InitPredefined( );
+
+ if (!ConnSSL_InitLibrary())
+ Log(LOG_WARNING, "Re-Initializing SSL failed, using old keys");
+
+ /* Start listening on sockets */
+ Conn_InitListeners( );
+
+ /* Sync configuration with established connections */
+ Conn_SyncServerStruct( );
+
+ Log( LOG_NOTICE|LOG_snotice, "Re-reading of configuration done." );
+} /* NGIRCd_Rehash */
+
+
+
/**
* Signal handler of ngIRCd.
* This function is called whenever ngIRCd catches a signal sent by the
NGIRCd_SignalQuit = true;
return;
case SIGHUP:
- /* re-read configuration */
- NGIRCd_SignalRehash = true;
- return;
+ break;
case SIGCHLD:
/* child-process exited, avoid zombies */
while (waitpid( -1, NULL, WNOHANG) > 0)
static void Signal_Handler_BH(int Signal)
{
switch (Signal) {
+ case SIGHUP:
+ /* re-read configuration */
+ NGIRCd_Rehash();
+ break;
#ifdef DEBUG
default:
Log(LOG_DEBUG, "Got signal %d! Ignored.", Signal);