diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2016-02-22 17:10:13 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2016-02-22 17:10:13 +0100 |
commit | 766433b8501e9218d7a6b0f4c66ffce788032118 (patch) | |
tree | df52bca988f78a2cdf5a5750e0d1ce3f6f245242 /src/poll.c | |
parent | 29894cc8d155188e057451cf58cc686a9ad0d1c6 (diff) | |
download | fastd-766433b8501e9218d7a6b0f4c66ffce788032118.tar fastd-766433b8501e9218d7a6b0f4c66ffce788032118.zip |
socket: improve and simplify error handling
Rather exit on errors we're unlikely to recover from than retrying
indefinitely.
Diffstat (limited to 'src/poll.c')
-rw-r--r-- | src/poll.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -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"); } |