diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-01-20 19:43:38 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-01-20 19:43:38 +0100 |
commit | 3996fbe2a2a212d9ac983950602cc09db55d77ef (patch) | |
tree | 8ba6323f1875c005ac310f2d12c95ba912a6630e /src | |
parent | 867b3b7d6b88ba4d07ec7c830576d4ac2f7dd226 (diff) |
dbus: don't try to connect to the system bus before it is actually up
Diffstat (limited to 'src')
-rw-r--r-- | src/dbus.c | 12 | ||||
-rw-r--r-- | src/dbus.h | 2 | ||||
-rw-r--r-- | src/manager.c | 4 | ||||
-rw-r--r-- | src/unit.c | 2 |
4 files changed, 12 insertions, 8 deletions
diff --git a/src/dbus.c b/src/dbus.c index 48051f25fb..d7b80ba01d 100644 --- a/src/dbus.c +++ b/src/dbus.c @@ -982,7 +982,7 @@ fail: return r; } -int bus_init(Manager *m) { +int bus_init(Manager *m, bool try_bus_connect) { int r; if (set_ensure_allocated(&m->bus_connections, trivial_hash_func, trivial_compare_func) < 0 || @@ -1003,9 +1003,13 @@ int bus_init(Manager *m) { return -ENOMEM; } - if ((r = bus_init_system(m)) < 0 || - (r = bus_init_api(m)) < 0 || - (r = bus_init_private(m)) < 0) + if (try_bus_connect) { + if ((r = bus_init_system(m)) < 0 || + (r = bus_init_api(m)) < 0) + return r; + } + + if ((r = bus_init_private(m)) < 0) return r; return 0; diff --git a/src/dbus.h b/src/dbus.h index 7c0da3320b..d0a9e8e30f 100644 --- a/src/dbus.h +++ b/src/dbus.h @@ -69,7 +69,7 @@ typedef struct BusProperty { " </method>\n" \ "</interface>\n" -int bus_init(Manager *m); +int bus_init(Manager *m, bool try_bus_connect); void bus_done(Manager *m); unsigned bus_dispatch(Manager *m); diff --git a/src/manager.c b/src/manager.c index 62847061a2..013b26b6c9 100644 --- a/src/manager.c +++ b/src/manager.c @@ -259,7 +259,7 @@ int manager_new(ManagerRunningAs running_as, Manager **_m) { goto fail; /* Try to connect to the busses, if possible. */ - if ((r = bus_init(m)) < 0) + if ((r = bus_init(m, running_as != MANAGER_SYSTEM)) < 0) goto fail; #ifdef HAVE_AUDIT @@ -2102,7 +2102,7 @@ static int manager_process_signal_fd(Manager *m) { if (!u || UNIT_IS_ACTIVE_OR_RELOADING(unit_active_state(u))) { log_info("Trying to reconnect to bus..."); - bus_init(m); + bus_init(m, true); } if (!u || !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(u))) { diff --git a/src/unit.c b/src/unit.c index 9dd02676e3..a7e6714c45 100644 --- a/src/unit.c +++ b/src/unit.c @@ -1194,7 +1194,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su /* The bus just might have become available, * hence try to connect to it, if we aren't * yet connected. */ - bus_init(u->meta.manager); + bus_init(u->meta.manager, true); if (unit_has_name(u, SPECIAL_SYSLOG_SERVICE)) /* The syslog daemon just might have become |