From: Jorge Pereira Date: Wed, 29 Jul 2015 17:30:41 +0000 (-0300) Subject: better handle of errors returned by kevent() in FreeBSD X-Git-Tag: release_3_0_10~267^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1169%2Fhead;p=thirdparty%2Ffreeradius-server.git better handle of errors returned by kevent() in FreeBSD --- 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;