]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
better handle of errors returned by kevent() in FreeBSD 1169/head
authorJorge Pereira <jpereiran@gmail.com>
Wed, 29 Jul 2015 17:30:41 +0000 (14:30 -0300)
committerJorge Pereira <jpereiran@gmail.com>
Wed, 29 Jul 2015 17:30:41 +0000 (14:30 -0300)
src/lib/event.c

index fa1e0aa0dafdcfac6c188111288cc6be3522d6ff..47a13cabfe90b30f3f7d1acbdb97536f77ce933d 100644 (file)
@@ -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;