properly check for EAGAIN in recv() calls
If recv() has no more messages on a non-blocking socket, errno will be EAGAIN,
not the return value!
diff --git a/openbsc/src/input/ipaccess.c b/openbsc/src/input/ipaccess.c
index 4396269..c721766 100644
--- a/openbsc/src/input/ipaccess.c
+++ b/openbsc/src/input/ipaccess.c
@@ -270,8 +270,8 @@
hh = (struct ipaccess_head *) msg->data;
ret = recv(bfd->fd, msg->data, 3, 0);
if (ret < 0) {
- if (ret != -EAGAIN)
- LOGP(DINP, LOGL_ERROR, "recv error %s\n", strerror(errno));
+ if (errno != EAGAIN)
+ LOGP(DINP, LOGL_ERROR, "recv error %d %s\n", ret, strerror(errno));
msgb_free(msg);
*error = ret;
return NULL;
diff --git a/openbsc/src/ipaccess/ipaccess-proxy.c b/openbsc/src/ipaccess/ipaccess-proxy.c
index 61c3c5b..d018b6e 100644
--- a/openbsc/src/ipaccess/ipaccess-proxy.c
+++ b/openbsc/src/ipaccess/ipaccess-proxy.c
@@ -321,8 +321,8 @@
hh = (struct ipaccess_head *) msg->data;
ret = recv(bfd->fd, msg->data, msg->data_len, 0);
if (ret < 0) {
- if (ret != -EAGAIN)
- DEBUGP(DINP, "recv error %s\n", strerror(errno));
+ if (errno != EAGAIN)
+ LOGP(DINP, LOGL_ERROR, "recv error %s\n", strerror(errno));
msgb_free(msg);
return ret;
}
@@ -635,7 +635,7 @@
hh = (struct ipaccess_head *) msg->data;
ret = recv(bfd->fd, msg->data, 3, 0);
if (ret < 0) {
- if (ret != -EAGAIN)
+ if (errno != EAGAIN)
LOGP(DINP, LOGL_ERROR, "recv error: %s\n", strerror(errno));
msgb_free(msg);
*error = ret;