mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-06-15 18:25:53 +00:00
systemctl: process only signals for jobs we really wait for
wait_filter() callback shouldn't process JobRemove signals for arbitrary jobs. It should only deal with signals for jobs which are included in set of jobs we wait for.
This commit is contained in:
committed by
Zbigniew Jędrzejewski-Szmek
parent
43ac008a93
commit
cd2430aee0
@@ -1125,7 +1125,7 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me
|
||||
|
||||
} else if (dbus_message_is_signal(message, "org.freedesktop.systemd1.Manager", "JobRemoved")) {
|
||||
uint32_t id;
|
||||
const char *path, *result, *unit;
|
||||
const char *path, *result, *unit, *r;
|
||||
|
||||
if (dbus_message_get_args(message, &error,
|
||||
DBUS_TYPE_UINT32, &id,
|
||||
@@ -1134,7 +1134,11 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me
|
||||
DBUS_TYPE_STRING, &result,
|
||||
DBUS_TYPE_INVALID)) {
|
||||
|
||||
free(set_remove(d->set, (char*) path));
|
||||
r = set_remove(d->set, (char*) path);
|
||||
if (!r)
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
|
||||
free(r);
|
||||
|
||||
if (!isempty(result))
|
||||
d->result = strdup(result);
|
||||
@@ -1154,7 +1158,11 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me
|
||||
/* Compatibility with older systemd versions <
|
||||
* 183 during upgrades. This should be dropped
|
||||
* one day. */
|
||||
free(set_remove(d->set, (char*) path));
|
||||
r = set_remove(d->set, (char*) path);
|
||||
if (!r)
|
||||
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||
|
||||
free(r);
|
||||
|
||||
if (*result)
|
||||
d->result = strdup(result);
|
||||
|
||||
Reference in New Issue
Block a user