diff options
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | src/core/service.c | 8 |
2 files changed, 6 insertions, 6 deletions
@@ -705,10 +705,6 @@ Features: External: -* NM: figure out what to do about network-online.target. - - maybe pull in the target as dependency for LSB initscripts ordered now after network.target - - https://bugzilla.gnome.org/show_bug.cgi?id=728965 - * dbus: - natively watch for dbus-*.service symlinks (PENDING) - teach dbus to activate all services it finds in /etc/systemd/services/org-*.service diff --git a/src/core/service.c b/src/core/service.c index 694a2658e9..4b6220e34d 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -392,7 +392,7 @@ static int sysv_translate_facility(const char *name, const char *filename, char static const char * const table[] = { /* LSB defined facilities */ "local_fs", NULL, - "network", SPECIAL_NETWORK_TARGET, + "network", SPECIAL_NETWORK_ONLINE_TARGET, "named", SPECIAL_NSS_LOOKUP_TARGET, "portmap", SPECIAL_RPCBIND_TARGET, "remote_fs", SPECIAL_REMOTE_FS_TARGET, @@ -854,7 +854,11 @@ static int service_load_sysv_path(Service *s, const char *path) { if (r == 0) continue; - r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true); + if (streq(m, SPECIAL_NETWORK_ONLINE_TARGET) && !startswith_no_case(t, "X-Start-Before:")) + /* the network-online target is special, as it needs to be actively pulled in */ + r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_WANTS, m, NULL, true); + else + r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true); if (r < 0) log_error_unit(u->id, "[%s:%u] Failed to add dependency on %s, ignoring: %s", |