summaryrefslogtreecommitdiffstats
path: root/tools/syslogd.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2009-05-28 17:59:11 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2009-05-28 17:59:11 +0200
commit23dac82b684e966490de707a44144b3ad0ce2323 (patch)
tree1972593591da71c31badc1419866c882546048de /tools/syslogd.c
parentd8ba1a0d9f1f90c250cc2405f87be151ac609968 (diff)
downloadrsyslog-23dac82b684e966490de707a44144b3ad0ce2323.tar.gz
rsyslog-23dac82b684e966490de707a44144b3ad0ce2323.tar.xz
rsyslog-23dac82b684e966490de707a44144b3ad0ce2323.zip
small enhancement: config validation run now exits with code 1 if an error is detected.
This change is considered important but small enough to apply it directly to the stable version. [But it is a border case, the change requires more code than I had hoped. Thus I have NOT tried to actually catch all cases, this is left for the current devel releases, if necessary]
Diffstat (limited to 'tools/syslogd.c')
-rw-r--r--tools/syslogd.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/tools/syslogd.c b/tools/syslogd.c
index 1840030b..01d3af71 100644
--- a/tools/syslogd.c
+++ b/tools/syslogd.c
@@ -2237,6 +2237,7 @@ init(void)
DEFiRet;
rsRetVal localRet;
int iNbrActions;
+ int bHadConfigErr = 0;
char cbuf[BUFSIZ];
char bufStartUpMsg[512];
struct sigaction sigAct;
@@ -2287,9 +2288,11 @@ init(void)
if(localRet != RS_RET_OK) {
errmsg.LogError(0, localRet, "CONFIG ERROR: could not interpret master config file '%s'.", ConfFile);
+ bHadConfigErr = 1;
} else if(iNbrActions == 0) {
errmsg.LogError(0, RS_RET_NO_ACTIONS, "CONFIG ERROR: there are no active actions configured. Inputs will "
"run, but no output whatsoever is created.");
+ bHadConfigErr = 1;
}
if(localRet != RS_RET_OK || iNbrActions == 0) {
@@ -2355,8 +2358,13 @@ init(void)
/* we are done checking the config - now validate if we should actually run or not.
* If not, terminate. -- rgerhards, 2008-07-25
*/
- if(iConfigVerify)
+ if(iConfigVerify) {
+ if(bHadConfigErr) {
+ /* a bit dirty, but useful... */
+ exit(1);
+ }
ABORT_FINALIZE(RS_RET_VALIDATION_RUN);
+ }
/* switch the message object to threaded operation, if necessary */
if(MainMsgQueType == QUEUETYPE_DIRECT || iMainMsgQueueNumWorkers > 1) {