From 766433b8501e9218d7a6b0f4c66ffce788032118 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Mon, 22 Feb 2016 17:10:13 +0100 Subject: socket: improve and simplify error handling Rather exit on errors we're unlikely to recover from than retrying indefinitely. --- src/poll.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/poll.c') diff --git a/src/poll.c b/src/poll.c index 6507aad..078ac2e 100644 --- a/src/poll.c +++ b/src/poll.c @@ -84,27 +84,35 @@ static inline void handle_fd(fastd_poll_fd_t *fd, bool input, bool error) { if (input) fastd_iface_handle(iface); - } + break; + } case POLL_TYPE_SOCKET: { fastd_socket_t *sock = container_of(fd, fastd_socket_t, fd); + if (error) { if (sock->peer) fastd_peer_reset_socket(sock->peer); else fastd_socket_error(sock); + + return; } - else if (input) { + + if (input) fastd_receive(sock); - } + + break; } - break; default: exit_bug("unknown FD type"); } + + if (error) + exit_error("unexpected poll error"); } -- cgit v1.2.3