dbus: include unit name in JobNew/JobRemoved signals
This breaks D-Bus interface slightly, but since the D-Bus API isn't covered by the interface stability promise this should be OK.
This commit is contained in:
parent
88f3e0c91f
commit
06dab8e18a
6
TODO
6
TODO
|
@ -23,6 +23,8 @@ Bugfixes:
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
|
|
||||||
|
* services which create their own subcgroups break cgroup-empty notification (needs to be fixed in the kernel)
|
||||||
|
|
||||||
* don't delete /tmp/systemd-namespace-* before a process is gone down
|
* don't delete /tmp/systemd-namespace-* before a process is gone down
|
||||||
|
|
||||||
* don't delete /run/users/lennart if lennart is still logged in even if aging is used
|
* don't delete /run/users/lennart if lennart is still logged in even if aging is used
|
||||||
|
@ -31,10 +33,6 @@ Features:
|
||||||
|
|
||||||
* vconsole: implement setterm -store -foreground xxx --background zzz
|
* vconsole: implement setterm -store -foreground xxx --background zzz
|
||||||
|
|
||||||
* taint flag for rtc-in-localtime
|
|
||||||
|
|
||||||
* include unit name in D-Bus 'Job' signals
|
|
||||||
|
|
||||||
* ExecOnFailure=/usr/bin/foo
|
* ExecOnFailure=/usr/bin/foo
|
||||||
|
|
||||||
* logind: add "mode" flag to poweroff/suspend inhibit logic so that we can
|
* logind: add "mode" flag to poweroff/suspend inhibit logic so that we can
|
||||||
|
|
|
@ -295,6 +295,7 @@ static DBusMessage* new_change_signal_message(Job *j) {
|
||||||
if (!dbus_message_append_args(m,
|
if (!dbus_message_append_args(m,
|
||||||
DBUS_TYPE_UINT32, &j->id,
|
DBUS_TYPE_UINT32, &j->id,
|
||||||
DBUS_TYPE_OBJECT_PATH, &p,
|
DBUS_TYPE_OBJECT_PATH, &p,
|
||||||
|
DBUS_TYPE_STRING, &j->unit->id,
|
||||||
DBUS_TYPE_INVALID))
|
DBUS_TYPE_INVALID))
|
||||||
goto oom;
|
goto oom;
|
||||||
}
|
}
|
||||||
|
@ -326,6 +327,7 @@ static DBusMessage* new_removed_signal_message(Job *j) {
|
||||||
if (!dbus_message_append_args(m,
|
if (!dbus_message_append_args(m,
|
||||||
DBUS_TYPE_UINT32, &j->id,
|
DBUS_TYPE_UINT32, &j->id,
|
||||||
DBUS_TYPE_OBJECT_PATH, &p,
|
DBUS_TYPE_OBJECT_PATH, &p,
|
||||||
|
DBUS_TYPE_STRING, &j->unit->id,
|
||||||
DBUS_TYPE_STRING, &r,
|
DBUS_TYPE_STRING, &r,
|
||||||
DBUS_TYPE_INVALID))
|
DBUS_TYPE_INVALID))
|
||||||
goto oom;
|
goto oom;
|
||||||
|
|
|
@ -198,10 +198,12 @@
|
||||||
" <signal name=\"JobNew\">\n" \
|
" <signal name=\"JobNew\">\n" \
|
||||||
" <arg name=\"id\" type=\"u\"/>\n" \
|
" <arg name=\"id\" type=\"u\"/>\n" \
|
||||||
" <arg name=\"job\" type=\"o\"/>\n" \
|
" <arg name=\"job\" type=\"o\"/>\n" \
|
||||||
|
" <arg name=\"unit\" type=\"s\"/>\n" \
|
||||||
" </signal>\n" \
|
" </signal>\n" \
|
||||||
" <signal name=\"JobRemoved\">\n" \
|
" <signal name=\"JobRemoved\">\n" \
|
||||||
" <arg name=\"id\" type=\"u\"/>\n" \
|
" <arg name=\"id\" type=\"u\"/>\n" \
|
||||||
" <arg name=\"job\" type=\"o\"/>\n" \
|
" <arg name=\"job\" type=\"o\"/>\n" \
|
||||||
|
" <arg name=\"unit\" type=\"s\"/>\n" \
|
||||||
" <arg name=\"result\" type=\"s\"/>\n" \
|
" <arg name=\"result\" type=\"s\"/>\n" \
|
||||||
" </signal>" \
|
" </signal>" \
|
||||||
" <signal name=\"StartupFinished\">\n" \
|
" <signal name=\"StartupFinished\">\n" \
|
||||||
|
|
|
@ -1349,18 +1349,19 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me
|
||||||
|
|
||||||
} else if (dbus_message_is_signal(message, "org.freedesktop.systemd1.Manager", "JobRemoved")) {
|
} else if (dbus_message_is_signal(message, "org.freedesktop.systemd1.Manager", "JobRemoved")) {
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
const char *path, *result;
|
const char *path, *result, *unit;
|
||||||
dbus_bool_t success = true;
|
dbus_bool_t success = true;
|
||||||
|
|
||||||
if (dbus_message_get_args(message, &error,
|
if (dbus_message_get_args(message, &error,
|
||||||
DBUS_TYPE_UINT32, &id,
|
DBUS_TYPE_UINT32, &id,
|
||||||
DBUS_TYPE_OBJECT_PATH, &path,
|
DBUS_TYPE_OBJECT_PATH, &path,
|
||||||
|
DBUS_TYPE_STRING, &unit,
|
||||||
DBUS_TYPE_STRING, &result,
|
DBUS_TYPE_STRING, &result,
|
||||||
DBUS_TYPE_INVALID)) {
|
DBUS_TYPE_INVALID)) {
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
if ((p = set_remove(d->set, (char*) path)))
|
p = set_remove(d->set, (char*) path);
|
||||||
free(p);
|
free(p);
|
||||||
|
|
||||||
if (*result)
|
if (*result)
|
||||||
d->result = strdup(result);
|
d->result = strdup(result);
|
||||||
|
@ -1369,7 +1370,26 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me
|
||||||
}
|
}
|
||||||
#ifndef LEGACY
|
#ifndef LEGACY
|
||||||
dbus_error_free(&error);
|
dbus_error_free(&error);
|
||||||
|
if (dbus_message_get_args(message, &error,
|
||||||
|
DBUS_TYPE_UINT32, &id,
|
||||||
|
DBUS_TYPE_OBJECT_PATH, &path,
|
||||||
|
DBUS_TYPE_STRING, &result,
|
||||||
|
DBUS_TYPE_INVALID)) {
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
/* Compatibility with older systemd versions <
|
||||||
|
* 183 during upgrades. This should be dropped
|
||||||
|
* one day. */
|
||||||
|
p = set_remove(d->set, (char*) path);
|
||||||
|
free(p);
|
||||||
|
|
||||||
|
if (*result)
|
||||||
|
d->result = strdup(result);
|
||||||
|
|
||||||
|
goto finish;
|
||||||
|
}
|
||||||
|
|
||||||
|
dbus_error_free(&error);
|
||||||
if (dbus_message_get_args(message, &error,
|
if (dbus_message_get_args(message, &error,
|
||||||
DBUS_TYPE_UINT32, &id,
|
DBUS_TYPE_UINT32, &id,
|
||||||
DBUS_TYPE_OBJECT_PATH, &path,
|
DBUS_TYPE_OBJECT_PATH, &path,
|
||||||
|
@ -1381,8 +1401,8 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me
|
||||||
* 19 during upgrades. This should be dropped
|
* 19 during upgrades. This should be dropped
|
||||||
* one day */
|
* one day */
|
||||||
|
|
||||||
if ((p = set_remove(d->set, (char*) path)))
|
p = set_remove(d->set, (char*) path);
|
||||||
free(p);
|
free(p);
|
||||||
|
|
||||||
if (!success)
|
if (!success)
|
||||||
d->result = strdup("failed");
|
d->result = strdup("failed");
|
||||||
|
|
Loading…
Reference in New Issue