summaryrefslogtreecommitdiff
path: root/bus/bus.c
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2006-12-20 06:18:19 +0000
committerRay Strode <rstrode@redhat.com>2006-12-20 06:18:19 +0000
commit5d77d1503e61339a971b099b8a4d24ffc502045b (patch)
tree05df7521b31ca52d05826e6229833ecf5379866c /bus/bus.c
parent3ec4b0f0238f65ed253644a1953cef9e351a3f71 (diff)
2006-12-19 Ray Strode <rstrode@redhat.com>
* bus/bus.c (process_config_every_time): don't overwrite existing bus context activation object until after we've checked that the new activation is valid. * bus/main.c (signal_handler), (handle_reload_watch): don't call exit() on failure, instead make do and keep going. (close_reload_pipe): new function to turn off hangup-causes-config-reload behavior if an unexpected error occurs
Diffstat (limited to 'bus/bus.c')
-rw-r--r--bus/bus.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/bus/bus.c b/bus/bus.c
index 562eb983..26f91adb 100644
--- a/bus/bus.c
+++ b/bus/bus.c
@@ -402,6 +402,7 @@ process_config_every_time (BusContext *context,
{
DBusString full_address;
DBusList *link;
+ BusActivation *new_activation;
char *addr;
dbus_bool_t retval;
@@ -467,19 +468,20 @@ process_config_every_time (BusContext *context,
}
/* Create activation subsystem */
-
- if (is_reload)
- bus_activation_unref (context->activation);
-
- context->activation = bus_activation_new (context, &full_address,
- bus_config_parser_get_service_dirs (parser),
- error);
- if (context->activation == NULL)
+ new_activation = bus_activation_new (context, &full_address,
+ bus_config_parser_get_service_dirs (parser),
+ error);
+ if (new_activation == NULL)
{
_DBUS_ASSERT_ERROR_IS_SET (error);
goto failed;
}
+ if (is_reload)
+ bus_activation_unref (context->activation);
+
+ context->activation = new_activation;
+
/* Drop existing conf-dir watches (if applicable) */
if (is_reload)