X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fdbus-kill.c;h=811adb1b5acc14e8b1ef790cca56524e204ed24c;hb=06eb4e3bf87584ea526a90643d49037cf6ffd7ff;hp=beae7da85087d29b72eb7200a227aa5f1252dafd;hpb=a6c0353b9268d5b780fb7ff05a10cb5031446e5d;p=elogind.git diff --git a/src/core/dbus-kill.c b/src/core/dbus-kill.c index beae7da85..811adb1b5 100644 --- a/src/core/dbus-kill.c +++ b/src/core/dbus-kill.c @@ -48,15 +48,39 @@ int bus_kill_context_set_transient_property( assert(name); assert(i); - if (streq(name, "SendSIGHUP")) { + if (streq(name, "KillMode")) { + const char *m; + KillMode k; + + if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING) + return -EINVAL; + + dbus_message_iter_get_basic(i, &m); + + k = kill_mode_from_string(m); + if (k < 0) + return -EINVAL; + + if (mode != UNIT_CHECK) { + c->kill_mode = k; + + unit_write_drop_in_private_format(u, mode, name, "KillMode=%s\n", kill_mode_to_string(k)); + } + + return 1; + + } else if (streq(name, "SendSIGHUP")) { if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_BOOLEAN) return -EINVAL; if (mode != UNIT_CHECK) { dbus_bool_t b; + dbus_message_iter_get_basic(i, &b); c->send_sighup = b; + + unit_write_drop_in_private_format(u, mode, name, "SendSIGHUP=%s\n", yes_no(b)); } return 1; @@ -68,8 +92,11 @@ int bus_kill_context_set_transient_property( if (mode != UNIT_CHECK) { dbus_bool_t b; + dbus_message_iter_get_basic(i, &b); c->send_sigkill = b; + + unit_write_drop_in_private_format(u, mode, name, "SendSIGKILL=%s\n", yes_no(b)); } return 1;