From: Luca Boccassi Date: Mon, 23 Oct 2023 15:43:33 +0000 (+0100) Subject: systemctl: fallback if logind doesn't support new flag X-Git-Tag: v255-rc1~160 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d334c1211fc02b40ff2ba6df398bdd8058c16d21;p=thirdparty%2Fsystemd.git systemctl: fallback if logind doesn't support new flag Follow-up for 665a3d6d15c09428 --- diff --git a/src/systemctl/systemctl-logind.c b/src/systemctl/systemctl-logind.c index cd83d29474a..268e528856a 100644 --- a/src/systemctl/systemctl-logind.c +++ b/src/systemctl/systemctl-logind.c @@ -89,6 +89,18 @@ int logind_reboot(enum action a) { SET_FLAG(flags, SD_LOGIND_SOFT_REBOOT, a == ACTION_SOFT_REBOOT); r = bus_call_method(bus, bus_login_mgr, method_with_flags, &error, NULL, "t", flags); + if (r < 0 && FLAGS_SET(flags, SD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP) && + sd_bus_error_has_name(&error, SD_BUS_ERROR_INVALID_ARGS)) { + sd_bus_error_free(&error); + r = bus_call_method( + bus, + bus_login_mgr, + method_with_flags, + &error, + NULL, + "t", + flags & ~SD_LOGIND_SOFT_REBOOT_IF_NEXTROOT_SET_UP); + } if (r >= 0) return 0; if (!sd_bus_error_has_name(&error, SD_BUS_ERROR_UNKNOWN_METHOD))