chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus: fix parsing of AcquireName() response
[elogind.git]
/
src
/
libsystemd-bus
/
bus-socket.c
diff --git
a/src/libsystemd-bus/bus-socket.c
b/src/libsystemd-bus/bus-socket.c
index 355f31c56251ddbec613dbaeb4b4e37b5c72e620..69f78c9a58f599e9aa55173a435b56363efb4be0 100644
(file)
--- a/
src/libsystemd-bus/bus-socket.c
+++ b/
src/libsystemd-bus/bus-socket.c
@@
-874,10
+874,10
@@
static int bus_socket_read_message_need(sd_bus *bus, size_t *need) {
b = ((const uint32_t*) bus->rbuffer)[3];
e = ((const uint8_t*) bus->rbuffer)[0];
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);
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
a = be32toh(a);
b = be32toh(b);
} else
@@
-900,6
+900,10
@@
static int bus_socket_make_message(sd_bus *bus, size_t size) {
assert(bus->rbuffer_size >= size);
assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO);
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);
if (bus->rbuffer_size > size) {
b = memdup((const uint8_t*) bus->rbuffer + size,
bus->rbuffer_size - size);
@@
-925,11
+929,7
@@
static int bus_socket_make_message(sd_bus *bus, size_t size) {
bus->fds = NULL;
bus->n_fds = 0;
bus->fds = NULL;
bus->n_fds = 0;
- r = bus_rqueue_push(bus, t);
- if (r < 0) {
- sd_bus_message_unref(t);
- return r;
- }
+ bus->rqueue[bus->rqueue_size++] = t;
return 1;
}
return 1;
}
@@
-953,10
+953,6
@@
int bus_socket_read_message(sd_bus *bus) {
assert(bus);
assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO);
assert(bus);
assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO);
- r = bus_rqueue_make_room(bus, 1);
- if (r < 0)
- return r;
-
r = bus_socket_read_message_need(bus, &need);
if (r < 0)
return r;
r = bus_socket_read_message_need(bus, &need);
if (r < 0)
return r;