summaryrefslogtreecommitdiffstats
path: root/lib/nl.c
diff options
context:
space:
mode:
authorКоренберг Марк (ноутбук дома) <socketpair@gmail.com>2012-09-09 20:25:07 (GMT)
committerКоренберг Марк (дома) <socketpair@gmail.com>2012-10-19 16:43:17 (GMT)
commit9d6b104ec8b4dc8ce182158bf6c81db23e937c5f (patch)
tree65295339133f56c5bcc6d2bbde96ad9ec8a72412 /lib/nl.c
parente7ec197da35d5f8efc44af0afbe21b8612478a57 (diff)
downloadlibnl-9d6b104ec8b4dc8ce182158bf6c81db23e937c5f.zip
libnl-9d6b104ec8b4dc8ce182158bf6c81db23e937c5f.tar.gz
libnl-9d6b104ec8b4dc8ce182158bf6c81db23e937c5f.tar.bz2
nl_recv(): "else if" logick simplified and refined
Diffstat (limited to 'lib/nl.c')
-rw-r--r--lib/nl.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/lib/nl.c b/lib/nl.c
index 2fa741f..8426c58 100644
--- a/lib/nl.c
+++ b/lib/nl.c
@@ -459,25 +459,31 @@ retry:
n = recvmsg(sk->s_fd, &msg, flags);
if (!n)
goto abort;
- else if (n < 0) {
+
+ if (n < 0) {
+
if (errno == EINTR) {
NL_DBG(3, "recvmsg() returned EINTR, retrying\n");
goto retry;
- } else if (errno == EAGAIN) {
+ }
+
+ if (errno == EAGAIN) {
NL_DBG(3, "recvmsg() returned EAGAIN, aborting\n");
goto abort;
- } else {
- free(msg.msg_control);
- free(*buf);
- return -nl_syserr2nlerr(errno);
}
+
+ free(msg.msg_control);
+ free(*buf);
+ return -nl_syserr2nlerr(errno);
}
if (msg.msg_flags & MSG_CTRUNC) {
msg.msg_controllen *= 2;
msg.msg_control = realloc(msg.msg_control, msg.msg_controllen);
goto retry;
- } else if (iov.iov_len < n || msg.msg_flags & MSG_TRUNC) {
+ }
+
+ if (iov.iov_len < n || msg.msg_flags & MSG_TRUNC) {
/* Provided buffer is not long enough, enlarge it
* to size of n (which should be total length of the message)
* and try again. */
@@ -485,7 +491,9 @@ retry:
iov.iov_base = *buf = realloc(*buf, iov.iov_len);
flags = 0;
goto retry;
- } else if (flags != 0) {
+ }
+
+ if (flags != 0) {
/* Buffer is big enough, do the actual reading */
flags = 0;
goto retry;