about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2012-09-11 11:40:47 +0200
committerAlexander Barton <alex@barton.de>2012-09-11 11:40:47 +0200
commitf38a9035e5439cb395b2de6b9bdfa36102bfe80c (patch)
tree00cf9c032ffe7f5e1d61ec99b93ef6826933f459
parenta12d6ff257813d47657d53f00699d21bfaf0e301 (diff)
downloadngircd-f38a9035e5439cb395b2de6b9bdfa36102bfe80c.tar.gz
ngircd-f38a9035e5439cb395b2de6b9bdfa36102bfe80c.zip
Show a warning on startup if config file is not a full path
ngIRCd is a long-running process and changes its working directory to "/" to
not block mounted filesystems and the like when running as daemon ("not in the
foreground"); therefore the path to the configuration file must be relative to
"/" (or the chroot() directory), which basically is "not relative", to ensure
that "kill -HUP" and the "REHASH" command work as expected later on.

This fixes parts of bug #127.
-rw-r--r--src/ngircd/conf.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c
index 034281c0..627e6d3f 100644
--- a/src/ngircd/conf.c
+++ b/src/ngircd/conf.c
@@ -1911,6 +1911,13 @@ Validate_Config(bool Configtest, bool Rehash)
 	bool config_valid = true;
 	char *ptr;
 
+	/* Emit a warning when the config file is not a full path name */
+	if (NGIRCd_ConfFile[0] && NGIRCd_ConfFile[0] != '/') {
+		Config_Error(LOG_WARNING,
+			"Not specifying a full path name to \"%s\" can cause problems when rehashing the server!",
+			NGIRCd_ConfFile);
+	}
+
 	/* Validate configured server name, see RFC 2812 section 2.3.1 */
 	ptr = Conf_ServerName;
 	do {