Revert "sd-bus: drop match cookie concept"
authorAdrian Szyndela <adrian.s@samsung.com>
Mon, 10 Feb 2020 16:00:05 +0000 (17:00 +0100)
committerAdrian Szyndela <adrian.s@samsung.com>
Wed, 26 Feb 2020 11:21:22 +0000 (12:21 +0100)
This reverts commit 532f808fd15ec2cd91777ab3ad9afce2670ebac5.

There are people somewhere that need kdbus.

Change-Id: I33e47f0b81edb2ec834675fd3183a485d25920b7

src/libsystemd/sd-bus/bus-control.c
src/libsystemd/sd-bus/bus-internal.h
src/libsystemd/sd-bus/bus-slot.c
src/libsystemd/sd-bus/sd-bus.c

index b77d6b6..ae1dbf5 100644 (file)
@@ -1602,7 +1602,8 @@ int bus_add_match_internal(
                 sd_bus *bus,
                 const char *match,
                 struct bus_match_component *components,
-                unsigned n_components) {
+                unsigned n_components,
+                uint64_t cookie) {
 
         assert(bus);
 
@@ -1663,7 +1664,8 @@ static int bus_remove_match_internal_dbus1(
 
 int bus_remove_match_internal(
                 sd_bus *bus,
-                const char *match) {
+                const char *match,
+                uint64_t cookie) {
 
         assert(bus);
 
index 6aac969..5728b02 100644 (file)
@@ -54,6 +54,7 @@ struct filter_callback {
 struct match_callback {
         sd_bus_message_handler_t callback;
 
+        uint64_t cookie;
         unsigned last_iteration;
 
         char *match_string;
@@ -293,6 +294,8 @@ struct sd_bus {
         uint64_t hello_flags;
         uint64_t attach_flags;
 
+        uint64_t match_cookie;
+
         sd_event_source *input_io_event_source;
         sd_event_source *output_io_event_source;
         sd_event_source *time_event_source;
index 725265b..33590c3 100644 (file)
@@ -93,7 +93,7 @@ void bus_slot_disconnect(sd_bus_slot *slot) {
         case BUS_MATCH_CALLBACK:
 
                 if (slot->match_added)
-                        bus_remove_match_internal(slot->bus, slot->match_callback.match_string);
+                        bus_remove_match_internal(slot->bus, slot->match_callback.match_string, slot->match_callback.cookie);
 
                 slot->bus->match_callbacks_modified = true;
                 bus_match_remove(&slot->bus->match_callbacks, &slot->match_callback);
index 55bcf56..7183293 100644 (file)
@@ -3043,6 +3043,7 @@ _public_ int sd_bus_add_match(
         }
 
         s->match_callback.callback = callback;
+        s->match_callback.cookie = ++bus->match_cookie;
 
         if (bus->bus_client) {
                 enum bus_match_scope scope;
@@ -3066,7 +3067,7 @@ _public_ int sd_bus_add_match(
                                 }
                         }
 
-                        r = bus_add_match_internal(bus, s->match_callback.match_string, components, n_components);
+                        r = bus_add_match_internal(bus, s->match_callback.match_string, components, n_components, s->match_callback.cookie);
                         if (r < 0)
                                 goto finish;