diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 64a612a7f0..c751e84253 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -1902,6 +1902,12 @@ static int install_error( "Unit %s is transient or generated.", changes[i].path); goto found; + case -EUCLEAN: + r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING, + "\"%s\" is not a valid unit name.", + changes[i].path); + goto found; + case -ELOOP: r = sd_bus_error_setf(error, BUS_ERROR_UNIT_LINKED, "Refusing to operate on alias name or linked unit file: %s", diff --git a/src/shared/install.c b/src/shared/install.c index 53446611be..d291eb6f21 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -362,6 +362,12 @@ void unit_file_dump_changes(int r, const char *verb, const UnitFileChange *chang verb, changes[i].path); logged = true; break; + case -EUCLEAN: + log_error_errno(changes[i].type, + "Failed to %s unit, \"%s\" is not a valid unit name.", + verb, changes[i].path); + logged = true; + break; case -ELOOP: log_error_errno(changes[i].type, "Failed to %s unit, refusing to operate on linked unit file %s", verb, changes[i].path); @@ -1794,7 +1800,8 @@ static int install_info_symlink_wants( return q; if (!unit_name_is_valid(dst, UNIT_NAME_ANY)) { - r = -EINVAL; + unit_file_changes_add(changes, n_changes, -EUCLEAN, dst, NULL); + r = -EUCLEAN; continue; }