diff options
author | Коренберг Марк (ноутбук дома) <socketpair@gmail.com> | 2012-09-09 20:25:07 (GMT) |
---|---|---|
committer | Коренберг Марк (дома) <socketpair@gmail.com> | 2012-10-19 16:43:17 (GMT) |
commit | 9d6b104ec8b4dc8ce182158bf6c81db23e937c5f (patch) | |
tree | 65295339133f56c5bcc6d2bbde96ad9ec8a72412 /lib/nl.c | |
parent | e7ec197da35d5f8efc44af0afbe21b8612478a57 (diff) | |
download | libnl-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.c | 24 |
1 files changed, 16 insertions, 8 deletions
@@ -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; |