From 84b5d3e532cf279761c7f17c954c986bc704ce68 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 23 Apr 2020 19:57:53 +0200 Subject: [PATCH] dhcp-client: port to recvmsg_safe() Split out of #15457, let's see if this is the culprit of the CI failure. (also setting green label here, since @keszybz already greenlit it in that other PR) --- src/libsystemd-network/sd-dhcp-client.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index a59ae4767e..31416c9f43 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -1927,14 +1927,14 @@ static int client_receive_message_raw( iov = IOVEC_MAKE(packet, buflen); - len = recvmsg(fd, &msg, 0); - if (len < 0) { - if (IN_SET(errno, EAGAIN, EINTR, ENETDOWN)) - return 0; - - return log_dhcp_client_errno(client, errno, + len = recvmsg_safe(fd, &msg, 0); + if (IN_SET(len, -EAGAIN, -EINTR, -ENETDOWN)) + return 0; + if (len < 0) + return log_dhcp_client_errno(client, len, "Could not receive message from raw socket: %m"); - } else if ((size_t)len < sizeof(DHCPPacket)) + + if ((size_t) len < sizeof(DHCPPacket)) return 0; CMSG_FOREACH(cmsg, &msg)