From d2fab2df54183e065e8925abb270e14cb7a69b9c Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 10 Dec 2015 17:32:39 +0100 Subject: [PATCH] platform: EAGAIN is equal to EWOULDBLOCK The macro EWOULDBLOCK is another name for EAGAIN; they are always the same in the GNU C Library. https://www.gnu.org/savannah-checkouts/gnu/libc/manual/html_node/Error-Codes.html Otherwise, we would need a workaround for EWOULDBLOCK too, because libnl maps that to NLE_FAILURE. So we would have to detect EAGAIN as (nle == -NLE_FAILURE && errno == EWOULDBLOCK). --- src/platform/nm-linux-platform.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index 3cceff79c..e3cc4d414 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -5456,8 +5456,12 @@ event_handler_read_netlink_one (NMPlatform *platform) nle = nl_recvmsgs_default (priv->nlh_event); /* Work around a libnl bug fixed in 3.2.22 (375a6294) */ - if (nle == 0 && (errno == EAGAIN || errno == EWOULDBLOCK)) + if (nle == 0 && errno == EAGAIN) { + /* EAGAIN is equal to EWOULDBLOCK. If it would not be, we'd have to + * workaround libnl3 mapping EWOULDBLOCK to -NLE_FAILURE. */ + G_STATIC_ASSERT (EAGAIN == EWOULDBLOCK); nle = -NLE_AGAIN; + } if (nle < 0) switch (nle) {