fix free()ing of config items

- we need to free the config after it has been succesfully loaded,
  not unconditionally before reloading.
- we also need to free them before exiting from the main program
  to have clean valgrind output.
master
rofl0r 2020-09-15 23:01:44 +01:00
parent 372d7ff824
commit 9d5ee85c3e
3 changed files with 5 additions and 3 deletions

View File

@ -286,7 +286,7 @@ free_added_headers (vector_t add_headers)
vector_delete (add_headers);
}
static void free_config (struct config_s *conf)
void free_config (struct config_s *conf)
{
safefree (conf->logf_name);
safefree (conf->stathost);
@ -467,8 +467,6 @@ int reload_config_file (const char *config_fname, struct config_s *conf)
log_message (LOG_NOTICE, "Reloading config file");
free_config (conf);
initialize_config_defaults (conf);
ret = load_config_file (config_fname, conf);

View File

@ -116,5 +116,6 @@ struct config_s {
extern int reload_config_file (const char *config_fname, struct config_s *conf);
int config_compile_regex (void);
void free_config (struct config_s *conf);
#endif

View File

@ -264,6 +264,7 @@ int reload_config (int reload_logging)
goto done;
}
if(config) free_config (config);
config = c_next;
if (reload_logging) ret = setup_logging ();
@ -415,6 +416,8 @@ main (int argc, char **argv)
filter_destroy ();
#endif /* FILTER_ENABLE */
free_config (config);
shutdown_logging ();
return EXIT_SUCCESS;