From 6ed0948d5df69ff81404a702cfbebe3217fa2f90 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 31 May 2014 06:10:25 +0200 Subject: Remove EINTR handling where signals are blocked anyways --- src/async.c | 12 ++++-------- src/fastd.c | 5 ----- src/random.c | 6 +----- src/receive.c | 2 +- src/send.c | 10 ++-------- src/tuntap.c | 8 +------- 6 files changed, 9 insertions(+), 34 deletions(-) diff --git a/src/async.c b/src/async.c index a443cfe..c1c4802 100644 --- a/src/async.c +++ b/src/async.c @@ -102,20 +102,16 @@ void fastd_async_handle(void) { .msg_iovlen = 1, }; - while (recvmsg(ctx.async_rfd, &msg, MSG_PEEK) < 0) { - if (errno != EINTR) - exit_errno("fastd_async_handle: recvmsg"); - } + if (recvmsg(ctx.async_rfd, &msg, MSG_PEEK) < 0) + exit_errno("fastd_async_handle: recvmsg"); uint8_t buf[header.len] __attribute__((aligned(8))); vec[1].iov_base = buf; vec[1].iov_len = sizeof(buf); msg.msg_iovlen = 2; - while (recvmsg(ctx.async_rfd, &msg, 0) < 0) { - if (errno != EINTR) - exit_errno("fastd_async_handle: recvmsg"); - } + if (recvmsg(ctx.async_rfd, &msg, 0) < 0) + exit_errno("fastd_async_handle: recvmsg"); switch (header.type) { case ASYNC_TYPE_RESOLVE_RETURN: diff --git a/src/fastd.c b/src/fastd.c index c129a3c..c7a5f1e 100644 --- a/src/fastd.c +++ b/src/fastd.c @@ -294,11 +294,6 @@ void fastd_close_all_fds(void) { for (fd = 3; fd < maxfd; fd++) { if (close(fd) < 0) { - if (errno == EINTR) { - fd--; - continue; - } - if (errno != EBADF) pr_error_errno("close"); } diff --git a/src/random.c b/src/random.c index 72a238b..72e6c6a 100644 --- a/src/random.c +++ b/src/random.c @@ -53,12 +53,8 @@ void fastd_random_bytes(void *buffer, size_t len, bool secure) { while (read_bytes < len) { ssize_t ret = read(fd, ((char*)buffer)+read_bytes, len-read_bytes); - if (ret < 0) { - if (errno == EINTR) - continue; - + if (ret < 0) exit_errno("unable to read from random device"); - } read_bytes += ret; } diff --git a/src/receive.c b/src/receive.c index a232eae..d954102 100644 --- a/src/receive.c +++ b/src/receive.c @@ -219,7 +219,7 @@ void fastd_receive(fastd_socket_t *sock) { ssize_t len = recvmsg(sock->fd, &message, 0); if (len <= 0) { - if (len < 0 && errno != EINTR) + if (len < 0) pr_warn_errno("recvmsg"); fastd_buffer_free(buffer); diff --git a/src/send.c b/src/send.c index c613fc6..9de0b3b 100644 --- a/src/send.c +++ b/src/send.c @@ -128,10 +128,7 @@ static void send_type(const fastd_socket_t *sock, const fastd_peer_address_t *lo if (!msg.msg_controllen) msg.msg_control = NULL; - int ret; - do { - ret = sendmsg(sock->fd, &msg, 0); - } while (ret < 0 && errno == EINTR); + int ret = sendmsg(sock->fd, &msg, 0); if (ret < 0 && errno == EINVAL && msg.msg_controllen) { pr_debug2("sendmsg failed, trying again without pktinfo"); @@ -142,10 +139,7 @@ static void send_type(const fastd_socket_t *sock, const fastd_peer_address_t *lo msg.msg_control = NULL; msg.msg_controllen = 0; - do { - ret = sendmsg(sock->fd, &msg, 0); - } while (ret < 0 && errno == EINTR); - + ret = sendmsg(sock->fd, &msg, 0); } if (ret < 0) { diff --git a/src/tuntap.c b/src/tuntap.c index b5a5df9..7f60caf 100644 --- a/src/tuntap.c +++ b/src/tuntap.c @@ -312,14 +312,8 @@ void fastd_tuntap_handle(void) { buffer = fastd_buffer_alloc(max_len, conf.min_encrypt_head_space, conf.min_encrypt_tail_space); ssize_t len = read(ctx.tunfd, buffer.data, max_len); - if (len < 0) { - if (errno == EINTR) { - fastd_buffer_free(buffer); - return; - } - + if (len < 0) exit_errno("read"); - } buffer.len = len; -- cgit v1.2.3