sd-bus: kdbus: set read_counter in synthesized msgs
authorAdrian Szyndela <adrian.s@samsung.com>
Tue, 24 Mar 2020 07:25:50 +0000 (08:25 +0100)
committerAdrian Szyndela <adrian.s@samsung.com>
Fri, 27 Mar 2020 10:13:52 +0000 (11:13 +0100)
read_counter was not set for synthesized messages, this was
failing a match check at bus-match.c:297.

src/libsystemd/sd-bus/bus-control-kernel.c
src/libsystemd/sd-bus/bus-kernel.c

index 34fe3d5..09d9638 100644 (file)
@@ -198,6 +198,7 @@ static int enqueue_kernel_reply(
         }
     }
 
+    m->read_counter = ++bus->read_counter;
     bus->rqueue[bus->rqueue_size++] = bus_message_ref_queued(m, bus);
 
     if (ret_slot)
index 0c58044..fdffe99 100644 (file)
@@ -855,6 +855,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k) {
         m->free_fds = true;
         fds = NULL;
 
+        m->read_counter = ++bus->read_counter;
         bus->rqueue[bus->rqueue_size++] = bus_message_ref_queued(m, bus);
         sd_bus_message_unref(m);
 
@@ -1167,6 +1168,7 @@ int bus_kernel_write_message(sd_bus *bus, sd_bus_message *m, bool hint_sync_call
                 if (r < 0)
                         return r;
 
+                m->read_counter = ++bus->read_counter;
                 r = bus_seal_synthetic_message(bus, reply);
                 if (r < 0)
                         return r;
@@ -1228,6 +1230,7 @@ static int push_name_owner_changed(
         bus_message_set_sender_driver(bus, m);
         message_set_timestamp(bus, m, ts);
 
+        m->read_counter = ++bus->read_counter;
         r = bus_seal_synthetic_message(bus, m);
         if (r < 0)
                 return r;
@@ -1312,6 +1315,7 @@ static int translate_reply(
 
         message_set_timestamp(bus, m, ts);
 
+        m->read_counter = ++bus->read_counter;
         r = bus_seal_synthetic_message(bus, m);
         if (r < 0)
                 return r;