From 5141f20d64e3b2e3c8616e84089c5acb6dd04f51 Mon Sep 17 00:00:00 2001 From: Jorge Pereira Date: Wed, 29 Jul 2015 14:30:41 -0300 Subject: [PATCH] better handle of errors returned by kevent() in FreeBSD --- src/lib/event.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lib/event.c b/src/lib/event.c index fa1e0aa0da..47a13cabfe 100644 --- a/src/lib/event.c +++ b/src/lib/event.c @@ -390,11 +390,19 @@ int fr_event_fd_insert(fr_event_list_t *el, int type, int fd, * We want to read from the FD. */ EV_SET(&evset, fd, EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, &el->readers[j]); - if (kevent(el->kq, &evset, 1, NULL, 0, NULL) < 0) { + if (kevent(el->kq, &evset, 1, &evset, 1, NULL) < 0) { fr_strerror_printf("Failed inserting event for FD %i: %s", fd, fr_syserror(errno)); return 0; } + if (evset.flags & EV_ERROR) { /* report errors */ + int num = (int)evset.data; + + fr_strerror_printf("The 'kevent' return error for FD %i: %s (%d)\n", + fd, fr_syserror(num), num); + return 0; + } + ef = &el->readers[j]; el->num_readers++; break; -- 2.47.2