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).
This commit is contained in:
Thomas Haller
2015-12-10 17:32:39 +01:00
parent 7235283a9a
commit d2fab2df54

View File

@@ -5456,8 +5456,12 @@ event_handler_read_netlink_one (NMPlatform *platform)
nle = nl_recvmsgs_default (priv->nlh_event); nle = nl_recvmsgs_default (priv->nlh_event);
/* Work around a libnl bug fixed in 3.2.22 (375a6294) */ /* 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; nle = -NLE_AGAIN;
}
if (nle < 0) if (nle < 0)
switch (nle) { switch (nle) {