From: Mantas Mikulėnas Date: Wed, 9 Oct 2013 11:57:12 +0000 (+0300) Subject: manager: connect to private bus even if $DBUS_SESSION_BUS_ADDRESS is not set X-Git-Tag: v209~1892 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=a0a6408e31fef4618e27fafba416b9858f66a8e3;p=elogind.git 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. --- diff --git a/src/core/manager.c b/src/core/manager.c index b45a2e11a..56191bfc7 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -486,6 +486,7 @@ static int manager_default_environment(Manager *m) { int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) { Manager *m; int r = -ENOMEM; + bool try_bus_connect = false; assert(_m); assert(running_as >= 0); @@ -557,15 +558,18 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) { if (r < 0) goto fail; - /* Try to connect to the busses, if possible. */ - if ((running_as == SYSTEMD_USER && getenv("DBUS_SESSION_BUS_ADDRESS")) || - running_as == SYSTEMD_SYSTEM) { - r = bus_init(m, reexecuting || running_as != SYSTEMD_SYSTEM); - if (r < 0) - goto fail; - } else + if (running_as == SYSTEMD_SYSTEM) + try_bus_connect = reexecuting; + else if (getenv("DBUS_SESSION_BUS_ADDRESS")) + try_bus_connect = true; + else 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 = m;