diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c index fc7e8e844a..de36a1f278 100644 --- a/src/libsystemd/sd-bus/bus-socket.c +++ b/src/libsystemd/sd-bus/bus-socket.c @@ -544,9 +544,11 @@ static int bus_socket_read_auth(sd_bus *b) { iov = IOVEC_MAKE((uint8_t *)b->rbuffer + b->rbuffer_size, n - b->rbuffer_size); - if (b->prefer_readv) + if (b->prefer_readv) { k = readv(b->input_fd, &iov, 1); - else { + if (k < 0) + k = -errno; + } else { mh = (struct msghdr) { .msg_iov = &iov, .msg_iovlen = 1, @@ -1187,9 +1189,11 @@ int bus_socket_read_message(sd_bus *bus) { iov = IOVEC_MAKE((uint8_t *)bus->rbuffer + bus->rbuffer_size, need - bus->rbuffer_size); - if (bus->prefer_readv) + if (bus->prefer_readv) { k = readv(bus->input_fd, &iov, 1); - else { + if (k < 0) + k = -errno; + } else { mh = (struct msghdr) { .msg_iov = &iov, .msg_iovlen = 1,