summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--man/systemd.service.xml9
-rw-r--r--src/core/service.c4
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)