b = ((const uint32_t*) bus->rbuffer)[3];
e = ((const uint8_t*) bus->rbuffer)[0];
- if (e == SD_BUS_LITTLE_ENDIAN) {
+ if (e == BUS_LITTLE_ENDIAN) {
a = le32toh(a);
b = le32toh(b);
- } else if (e == SD_BUS_BIG_ENDIAN) {
+ } else if (e == BUS_BIG_ENDIAN) {
a = be32toh(a);
b = be32toh(b);
} else
return 0;
}
-static int bus_socket_make_message(sd_bus *bus, size_t size, sd_bus_message **m) {
+static int bus_socket_make_message(sd_bus *bus, size_t size) {
sd_bus_message *t;
void *b;
int r;
assert(bus);
- assert(m);
assert(bus->rbuffer_size >= size);
assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO);
+ r = bus_rqueue_make_room(bus);
+ if (r < 0)
+ return r;
+
if (bus->rbuffer_size > size) {
b = memdup((const uint8_t*) bus->rbuffer + size,
bus->rbuffer_size - size);
bus->fds = NULL;
bus->n_fds = 0;
- *m = t;
+ bus->rqueue[bus->rqueue_size++] = t;
+
return 1;
}
-int bus_socket_read_message(sd_bus *bus, sd_bus_message **m) {
+int bus_socket_read_message(sd_bus *bus) {
struct msghdr mh;
struct iovec iov;
ssize_t k;
bool handle_cmsg = false;
assert(bus);
- assert(m);
assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO);
r = bus_socket_read_message_need(bus, &need);
return r;
if (bus->rbuffer_size >= need)
- return bus_socket_make_message(bus, need, m);
+ return bus_socket_make_message(bus, need);
b = realloc(bus->rbuffer, need);
if (!b)
return r;
if (bus->rbuffer_size >= need)
- return bus_socket_make_message(bus, need, m);
+ return bus_socket_make_message(bus, need);
return 1;
}