summaryrefslogtreecommitdiffstats
path: root/bus/main.c
diff options
context:
space:
mode:
authorJon Trowbridge <trow@ximian.com>2004-04-16 15:01:25 +0000
committerJon Trowbridge <trow@ximian.com>2004-04-16 15:01:25 +0000
commit600e411f25082bcf82d610a4c71b0dc3435b5a42 (patch)
tree661eb6afae344d8e28202df438801b6e1e3a094e /bus/main.c
parenta470eaa0789662d3d3e1f0a23e75c7be2ab574cc (diff)
2004-04-15 Jon Trowbridge <trow@ximian.com>
* bus/main.c (signal_handler): Reload the configuration files on SIGHUP. (main): Set up our SIGHUP handler. * bus/bus.c (struct BusContext): Store the config file, user and fork flag in the BusContext. (process_config_first_time_only): Added. Contains the code (previously in bus_context_new) for setting up the BusContext from the BusConfigParser that should only be run the first time the config files are read. (process_config_every_time): Added. Contains the code (previously in bus_context_new) for setting up the BusContext from the BusConfigParser that should be run every time the config files are read. (load_config): Added. Builds a BusConfigParser from the config files and passes the resulting structure off to process_config_first_time_only (assuming this is the first time) and process_config_every_time. (bus_context_new): All of the config-related code has been moved to process_config_first_time_only and process_config_every_time. Now this function just does the non-config-related initializations and calls load_config. (bus_context_reload_config): Added.
Diffstat (limited to 'bus/main.c')
-rw-r--r--bus/main.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/bus/main.c b/bus/main.c
index 33c67657..8d33fbbc 100644
--- a/bus/main.c
+++ b/bus/main.c
@@ -29,15 +29,28 @@
#include <errno.h>
static BusContext *context;
-static dbus_bool_t got_sighup = FALSE;
static void
signal_handler (int sig)
{
+ DBusError error;
+
switch (sig)
{
case SIGHUP:
- got_sighup = TRUE;
+ /* FIXME: We shouldn't be reloading the config in the
+ signal handler. We should use a pipe or something to
+ make the reload happen in the main loop. */
+ dbus_error_init (&error);
+ if (!bus_context_reload_config (context, &error))
+ {
+ _dbus_warn ("Unable to reload configuration: %s\n",
+ error.message);
+ dbus_error_free (&error);
+ exit (1);
+ }
+ break;
+
case SIGTERM:
_dbus_loop_quit (bus_context_get_loop (context));
break;
@@ -297,7 +310,7 @@ main (int argc, char **argv)
exit (1);
}
- /* FIXME we have to handle this properly below _dbus_set_signal_handler (SIGHUP, signal_handler); */
+ _dbus_set_signal_handler (SIGHUP, signal_handler);
_dbus_set_signal_handler (SIGTERM, signal_handler);
_dbus_verbose ("We are on D-Bus...\n");
@@ -306,13 +319,5 @@ main (int argc, char **argv)
bus_context_shutdown (context);
bus_context_unref (context);
- /* If we exited on TERM we just exit, if we exited on
- * HUP we restart the daemon.
- */
- if (got_sighup)
- {
- /* FIXME execv (argv) basically */
- }
-
return 0;
}