Index: gnome-packagekit-3.21.4/src/systemd-proxy.c =================================================================== --- gnome-packagekit-3.21.4.orig/src/systemd-proxy.c +++ gnome-packagekit-3.21.4/src/systemd-proxy.c @@ -63,10 +63,17 @@ systemd_proxy_can_restart (SystemdProxy gboolean *can_restart, GError **error) { + return TRUE; +} + +gboolean +systemd_proxy_restart (SystemdProxy *proxy, + GError **error) +{ PolkitAuthorizationResult *res; + GDBusConnection *bus; GError *local_error = NULL; - *can_restart = FALSE; res = polkit_authority_check_authorization_sync (proxy->authority, proxy->subject, SYSTEMD_REBOOT_ACTION, @@ -77,29 +84,18 @@ systemd_proxy_can_restart (SystemdProxy if (res == NULL) { g_propagate_error (error, local_error); return FALSE; + } else if (polkit_authorization_result_get_is_authorized (res) | + polkit_authorization_result_get_is_challenge (res)) { + bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); + g_dbus_connection_call_sync (bus, + SYSTEMD_DBUS_NAME, + SYSTEMD_DBUS_PATH, + SYSTEMD_DBUS_INTERFACE, + "Reboot", + g_variant_new ("(b)", TRUE), + NULL, 0, G_MAXINT, NULL, NULL); + g_object_unref (bus); } - *can_restart = polkit_authorization_result_get_is_authorized (res) || - polkit_authorization_result_get_is_challenge (res); - - g_object_unref (res); - - return TRUE; -} - -gboolean -systemd_proxy_restart (SystemdProxy *proxy, - GError **error) -{ - g_autoptr(GDBusConnection) bus = NULL; - - bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); - g_dbus_connection_call_sync (bus, - SYSTEMD_DBUS_NAME, - SYSTEMD_DBUS_PATH, - SYSTEMD_DBUS_INTERFACE, - "Reboot", - g_variant_new ("(b)", TRUE), - NULL, 0, G_MAXINT, NULL, NULL); return TRUE; }