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:
@@ -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) {
|
||||||
|
Reference in New Issue
Block a user