diff options
-rw-r--r-- | man/systemd.service.xml | 9 | ||||
-rw-r--r-- | src/core/service.c | 4 |
2 files changed, 10 insertions, 3 deletions
diff --git a/man/systemd.service.xml b/man/systemd.service.xml index 1551d0d0ae..11f98c34d6 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -126,8 +126,9 @@ <para>If set to <option>simple</option> (the default - value) it is expected that the process - configured with + value if <varname>BusName=</varname> + is not specified) it is expected that + the process configured with <varname>ExecStart=</varname> is the main process of the service. In this mode, if the process offers @@ -182,7 +183,9 @@ option configured implicitly gain dependencies on the <filename>dbus.socket</filename> - unit.</para> + unit. This type is the default if + <varname>BusName=</varname> is + specified.</para> <para>Behaviour of <option>notify</option> is similar to diff --git a/src/core/service.c b/src/core/service.c index a99e1c3770..02d1aa845b 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -115,6 +115,7 @@ static void service_init(Unit *u) { s->timeout_usec = DEFAULT_TIMEOUT_USEC; s->restart_usec = DEFAULT_RESTART_USEC; + s->type = _SERVICE_TYPE_INVALID; s->watchdog_watch.type = WATCH_INVALID; @@ -1216,6 +1217,9 @@ static int service_load(Unit *u) { /* This is a new unit? Then let's add in some extras */ if (u->load_state == UNIT_LOADED) { + if (s->type == _SERVICE_TYPE_INVALID) + s->type = s->bus_name ? SERVICE_DBUS : SERVICE_SIMPLE; + service_fix_output(s); if ((r = unit_add_exec_dependencies(u, &s->exec_context)) < 0) |