--- gconf/gconfd.c.orig Fri May 5 12:40:23 2006 +++ gconf/gconfd.c Fri May 5 12:41:43 2006 @@ -124,12 +124,6 @@ static gboolean in_shutdown = FALSE; -/* - * Flag indicating we received a SIGHUP and we should reaload - * all sources during the next periodic_cleanup() - */ -static gboolean need_db_reload = FALSE; - /* * CORBA goo */ @@ -410,6 +404,18 @@ } static void +reload_db (void) +{ + gconf_log (GCL_INFO, _("SIGHUP received, reloading all databases")); + + logfile_save (); + shutdown_databases (); + init_databases (); + gconf_server_load_sources (); + logfile_read (); +} + +static void signal_handler (int signo) { static gint in_fatal = 0; @@ -482,8 +488,8 @@ case SIGHUP: --in_fatal; - /* reload sources during next periodic_cleanup() */ - need_db_reload = TRUE; + /* reload sources immediately */ + reload_db (); break; #endif @@ -864,18 +870,6 @@ static gboolean periodic_cleanup_timeout(gpointer data) { - if (need_db_reload) - { - gconf_log (GCL_INFO, _("SIGHUP received, reloading all databases")); - - need_db_reload = FALSE; - logfile_save (); - shutdown_databases (); - init_databases (); - gconf_server_load_sources (); - logfile_read (); - } - gconf_log (GCL_DEBUG, "Performing periodic cleanup, expiring cache cruft"); drop_old_clients ();