mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
dbus: don't try to connect to the system bus before it is actually up
This commit is contained in:
parent
867b3b7d6b
commit
3996fbe2a2
2
TODO
2
TODO
@ -1,7 +1,5 @@
|
||||
Bugs:
|
||||
|
||||
* Don't try to connect to dbus during early boot
|
||||
|
||||
* sometimes processes seem to remain when we kill a service
|
||||
http://lists.fedoraproject.org/pipermail/devel/2011-January/147559.html
|
||||
|
||||
|
12
src/dbus.c
12
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;
|
||||
|
@ -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);
|
||||
|
@ -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))) {
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user