manager: connect to private bus even if $DBUS_SESSION_BUS_ADDRESS is not set

Because that's exactly the kind of situation where the private bus is
necessary.
This commit is contained in:
Mantas Mikulėnas 2013-10-09 14:57:12 +03:00 committed by Colin Walters
parent 3990f24765
commit a0a6408e31

View file

@ -486,6 +486,7 @@ static int manager_default_environment(Manager *m) {
int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) { int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) {
Manager *m; Manager *m;
int r = -ENOMEM; int r = -ENOMEM;
bool try_bus_connect = false;
assert(_m); assert(_m);
assert(running_as >= 0); assert(running_as >= 0);
@ -557,15 +558,18 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) {
if (r < 0) if (r < 0)
goto fail; goto fail;
/* Try to connect to the busses, if possible. */ if (running_as == SYSTEMD_SYSTEM)
if ((running_as == SYSTEMD_USER && getenv("DBUS_SESSION_BUS_ADDRESS")) || try_bus_connect = reexecuting;
running_as == SYSTEMD_SYSTEM) { else if (getenv("DBUS_SESSION_BUS_ADDRESS"))
r = bus_init(m, reexecuting || running_as != SYSTEMD_SYSTEM); try_bus_connect = true;
if (r < 0) else
goto fail;
} else
log_debug("Skipping DBus session bus connection attempt - no DBUS_SESSION_BUS_ADDRESS set..."); log_debug("Skipping DBus session bus connection attempt - no DBUS_SESSION_BUS_ADDRESS set...");
/* Try to connect to the busses, if possible. */
r = bus_init(m, try_bus_connect);
if (r < 0)
goto fail;
m->taint_usr = dir_is_empty("/usr") > 0; m->taint_usr = dir_is_empty("/usr") > 0;
*_m = m; *_m = m;