From 51a540c27efa3b22f550d7f3da734dcebdc4b204 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Mon, 3 Nov 2014 13:00:26 +0100 Subject: [PATCH] stats: disable stats if no loggers are enabled --- src/counters.c | 6 ++++++ src/output-stats.c | 7 +++++++ src/output-stats.h | 2 ++ src/util-error.c | 1 + src/util-error.h | 1 + 5 files changed, 17 insertions(+) diff --git a/src/counters.c b/src/counters.c index ec28d2e062..6f2333ce97 100644 --- a/src/counters.c +++ b/src/counters.c @@ -190,6 +190,12 @@ static void SCPerfInitOPCtx(void) sc_counter_tts = (uint32_t) atoi(interval); } + if (!OutputStatsLoggersRegistered()) { + SCLogWarning(SC_WARN_NO_STATS_LOGGERS, "stats are enabled but no loggers are active"); + sc_counter_enabled = FALSE; + SCReturn; + } + /* Store the engine start time */ time(&sc_start_time); diff --git a/src/output-stats.c b/src/output-stats.c index df6fa1b09b..a6752fc5b7 100644 --- a/src/output-stats.c +++ b/src/output-stats.c @@ -222,6 +222,13 @@ void TmModuleStatsLoggerRegister (void) tmm_modules[TMM_STATSLOGGER].cap_flags = 0; } +int OutputStatsLoggersRegistered(void) +{ + if (list != NULL) + return 1; + return 0; +} + void OutputStatsShutdown(void) { OutputStatsLogger *logger = list; diff --git a/src/output-stats.h b/src/output-stats.h index adb3d11761..6ca89f931b 100644 --- a/src/output-stats.h +++ b/src/output-stats.h @@ -48,6 +48,8 @@ int OutputRegisterStatsLogger(const char *name, StatsLogger LogFunc, OutputCtx * void TmModuleStatsLoggerRegister (void); +int OutputStatsLoggersRegistered(void); + void OutputStatsShutdown(void); #endif /* __OUTPUT_STATS_H__ */ diff --git a/src/util-error.c b/src/util-error.c index 8da681ac3d..454f8f3ff2 100644 --- a/src/util-error.c +++ b/src/util-error.c @@ -300,6 +300,7 @@ const char * SCErrorToString(SCError err) CASE_CODE (SC_ERR_PCIE_INIT_FAILED); CASE_CODE (SC_WARN_LUA_SCRIPT); CASE_CODE (SC_ERR_LUA_SCRIPT); + CASE_CODE (SC_WARN_NO_STATS_LOGGERS); } return "UNKNOWN_ERROR"; diff --git a/src/util-error.h b/src/util-error.h index 7d71552905..21fc611160 100644 --- a/src/util-error.h +++ b/src/util-error.h @@ -289,6 +289,7 @@ typedef enum { SC_WARN_NFLOG_SETSOCKOPT, SC_WARN_LUA_SCRIPT, SC_ERR_LUA_SCRIPT, + SC_WARN_NO_STATS_LOGGERS, } SCError; const char *SCErrorToString(SCError);