From 7b77ed8cf36e8eca6017791626044b61ae2d68e7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 13 Dec 2013 03:30:42 +0100 Subject: event: be more conservative when returning errors from event handler callbacks We really should return errors from event handlers if we have a continous problem and don't know any other solution. --- src/socket-proxy/socket-proxyd.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/socket-proxy/socket-proxyd.c') diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c index c6f56be60a..b066633b1d 100644 --- a/src/socket-proxy/socket-proxyd.c +++ b/src/socket-proxy/socket-proxyd.c @@ -462,6 +462,7 @@ fail: } static int accept_cb(sd_event_source *s, int fd, uint32_t revents, void *userdata) { + _cleanup_free_ char *peer = NULL; Context *context = userdata; int nfd = -1, r; @@ -471,24 +472,24 @@ static int accept_cb(sd_event_source *s, int fd, uint32_t revents, void *userdat assert(context); nfd = accept4(fd, NULL, NULL, SOCK_NONBLOCK|SOCK_CLOEXEC); - if (nfd >= 0) { - _cleanup_free_ char *peer = NULL; - + if (nfd < 0) { + if (errno != -EAGAIN) + log_warning("Failed to accept() socket: %m"); + } else { getpeername_pretty(nfd, &peer); log_debug("New connection from %s", strna(peer)); r = add_connection_socket(context, sd_event_source_get_event(s), nfd); if (r < 0) { + log_error("Failed to accept connection, ignoring: %s", strerror(-r)); close_nointr_nofail(fd); - return r; } - - } else if (errno != -EAGAIN) - log_warning("Failed to accept() socket: %m"); + } r = sd_event_source_set_enabled(s, SD_EVENT_ONESHOT); if (r < 0) { - log_error("Error %d while re-enabling listener with ONESHOT: %s", r, strerror(-r)); + log_error("Error while re-enabling listener with ONESHOT: %s", strerror(-r)); + sd_event_exit(sd_event_source_get_event(s), r); return r; } -- cgit v1.2.3-54-g00ecf