--- a/src/server/daemon/event_bsd.c Tue Dec 27 14:02:28 2016 +0100 +++ b/src/server/daemon/event_bsd.c Tue Dec 27 17:19:00 2016 +0100 @@ -103,8 +103,10 @@ for(int i=0;i<nev;i++) { event_t *event = (event_t*)events[i].udata; if(event->fn) { + int ep = event->poll; if(event->fn(ev, event)) { - // TODO: reassociate? + // TODO: reassociate? + // TODO: check ep and event->poll } else if(event->finish) { event->finish(ev, event); } @@ -127,12 +129,14 @@ } int ev_pollin(event_handler_t *h, int fd, event_t *event) { + event->poll = EVENT_POLLIN; struct kevent kev; EV_SET(&kev, fd, EVFILT_READ, EV_ADD, 0, 0, event); return kevent(ev_get_port(h), &kev, 1, NULL, 0, NULL); } int ev_pollout(event_handler_t *h, int fd, event_t *event) { + event->poll = EVENT_POLLOUT; struct kevent kev; EV_SET(&kev, fd, EVFILT_WRITE, EV_ADD, 0, 0, event); return kevent(ev_get_port(h), &kev, 1, NULL, 0, NULL);