Log: Do not open logfiles when parse-and-exit option is active

This is a quick workaround for an issue where configured logfiles are
opened/created during parsing of a config file even when parse-and-exit
option is active. We should later refactor the logging code to avoid
opening log during parsing altogether.
This commit is contained in:
Ondrej Zajicek (work) 2020-05-31 13:21:55 +02:00
parent eee8af4db2
commit fae5448134
3 changed files with 14 additions and 7 deletions

View file

@ -50,9 +50,12 @@ log_limit:
log_file: log_file:
text log_limit { text log_limit {
if (!parse_and_exit)
{
this_log->rf = rf_open(new_config->pool, $1, "a"); this_log->rf = rf_open(new_config->pool, $1, "a");
if (!this_log->rf) cf_error("Unable to open log file '%s': %m", $1); if (!this_log->rf) cf_error("Unable to open log file '%s': %m", $1);
this_log->fh = rf_file(this_log->rf); this_log->fh = rf_file(this_log->rf);
}
this_log->pos = -1; this_log->pos = -1;
this_log->filename = $1; this_log->filename = $1;
} }
@ -88,10 +91,13 @@ conf: mrtdump_base ;
mrtdump_base: mrtdump_base:
MRTDUMP PROTOCOLS mrtdump_mask ';' { new_config->proto_default_mrtdump = $3; } MRTDUMP PROTOCOLS mrtdump_mask ';' { new_config->proto_default_mrtdump = $3; }
| MRTDUMP text ';' { | MRTDUMP text ';' {
if (!parse_and_exit)
{
struct rfile *f = rf_open(new_config->pool, $2, "a"); struct rfile *f = rf_open(new_config->pool, $2, "a");
if (!f) cf_error("Unable to open MRTDump file '%s': %m", $2); if (!f) cf_error("Unable to open MRTDump file '%s': %m", $2);
new_config->mrtdump_file = rf_fileno(f); new_config->mrtdump_file = rf_fileno(f);
} }
}
; ;

View file

@ -658,7 +658,7 @@ signal_init(void)
*/ */
static char *opt_list = "bc:dD:ps:P:u:g:flRh"; static char *opt_list = "bc:dD:ps:P:u:g:flRh";
static int parse_and_exit; int parse_and_exit;
char *bird_name; char *bird_name;
static char *use_user; static char *use_user;
static char *use_group; static char *use_group;

View file

@ -20,6 +20,7 @@ struct rfile;
/* main.c */ /* main.c */
extern char *bird_name; extern char *bird_name;
extern int parse_and_exit;
void async_config(void); void async_config(void);
void async_dump(void); void async_dump(void);
void async_shutdown(void); void async_shutdown(void);