-const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.65 2007/07/21 11:51:36 fabiankeil Exp $";
+const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.69 2007/10/27 13:02:27 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loadcfg.c,v $
*
* Revisions :
* $Log: loadcfg.c,v $
+ * Revision 1.69 2007/10/27 13:02:27 fabiankeil
+ * Relocate daemon-mode-related log messages to make sure
+ * they aren't shown again in case of configuration reloads.
+ *
+ * Revision 1.68 2007/10/19 16:32:34 fabiankeil
+ * Plug memory leak introduced with my last commit.
+ *
+ * Revision 1.67 2007/10/14 14:12:41 fabiankeil
+ * When in daemon mode, close stderr after the configuration file has been
+ * parsed the first time. If logfile isn't set, stop logging. Fixes BR#897436.
+ *
+ * Revision 1.66 2007/08/05 14:02:09 fabiankeil
+ * #1763173 from Stefan Huehner: declare unload_configfile() static.
+ *
* Revision 1.65 2007/07/21 11:51:36 fabiankeil
* As Hal noticed, checking dispatch_cgi() as the last cruncher
* looks like a bug if CGI requests are blocked unintentionally,
*
* Description : Load the config file and all parameters.
*
+ * XXX: more than thousand lines long
+ * and thus in serious need of refactoring.
+ *
* Parameters : None
*
* Returns : The configuration_spec, or NULL on error.
struct file_list *fs;
unsigned long linenum = 0;
int i;
+ char *logfile = NULL;
if ( !check_file_changed(current_configfile, configfile, &fs))
{
* In logdir by default
* *************************************************************************/
case hash_logfile :
- freez(config->logfile);
- config->logfile = no_daemon ? NULL : make_path(config->logdir, arg);
+ if (!no_daemon)
+ {
+ logfile = make_path(config->logdir, arg);
+ if (NULL == logfile)
+ {
+ log_error(LOG_LEVEL_FATAL, "Out of memory while creating logfile path");
+ }
+ }
continue;
/* *************************************************************************
fclose(configfp);
+ set_debug_level(config->debug);
+
+ freez(config->logfile);
+
+ if (!no_daemon)
+ {
+ if (NULL != logfile)
+ {
+ config->logfile = logfile;
+ init_error_log(Argv[0], config->logfile);
+ }
+ else
+ {
+ disable_logging();
+ }
+ }
+
if (NULL == config->proxy_args)
{
log_error(LOG_LEVEL_FATAL, "Out of memory loading config - insufficient memory for config->proxy_args");
}
- init_error_log(Argv[0], config->logfile, config->debug);
-
if (config->actions_file[0])
{
add_loader(load_actions_file, config);
}
if (*config->haddr == '\0')
{
- config->haddr = NULL;
+ /*
+ * Only the port specified. We stored it in config->hport
+ * and don't need its text representation anymore.
+ */
+ freez(config->haddr);
}
}