From fb33957405ea342ef81d307e1da983cedc5f1960 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 24 Dec 2009 13:35:18 +0100 Subject: 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! --- openbsc/src/input/ipaccess.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'openbsc/src/input/ipaccess.c') diff --git a/openbsc/src/input/ipaccess.c b/openbsc/src/input/ipaccess.c index 4396269db..c72176657 100644 --- a/openbsc/src/input/ipaccess.c +++ b/openbsc/src/input/ipaccess.c @@ -270,8 +270,8 @@ struct msgb *ipaccess_read_msg(struct bsc_fd *bfd, int *error) 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; -- cgit v1.2.3