+static int bus_read_message(sd_bus *bus) {
+ assert(bus);
+
+ if (bus->is_kernel)
+ return bus_kernel_read_message(bus);
+ else
+ return bus_socket_read_message(bus);
+}
+
+int bus_rqueue_make_room(sd_bus *bus, unsigned n) {
+ sd_bus_message **q;
+ unsigned x;
+
+ x = bus->rqueue_size + n;
+
+ if (bus->rqueue_allocated >= x)
+ return 0;
+
+ if (x > BUS_RQUEUE_MAX)
+ return -ENOBUFS;
+
+ q = realloc(bus->rqueue, x * sizeof(sd_bus_message*));
+ if (!q)
+ return -ENOMEM;
+
+ bus->rqueue = q;
+ bus->rqueue_allocated = x;
+
+ return 0;
+}
+
+int bus_rqueue_push(sd_bus *bus, sd_bus_message *m) {