diff -r d9c3c23c635b -r 1e1fca11aaff src/server/daemon/event_bsd.c --- a/src/server/daemon/event_bsd.c Sun Aug 11 10:09:20 2024 +0200 +++ b/src/server/daemon/event_bsd.c Sun Aug 11 13:26:17 2024 +0200 @@ -43,7 +43,8 @@ ev->numins = cfg->nthreads; for(int i=0;inthreads;i++) { - EventHandler *handler = malloc(sizeof(EventHandler)); + EventHandlerKqueue *handler = malloc(sizeof(EventHandlerKqueue)); + memset(handler, 0, sizeof(EventHandlerKqueue)); ev->instances[i] = handler; handler->kqueue = kqueue(); @@ -64,7 +65,8 @@ } -void ev_handle_events(EventHandler *ev) { +void ev_handle_events(EventHandlerKqueue *ev) { + EventHandler *h = (EventHandler*)ev; struct timespec timeout; timeout.tv_nsec = 0; timeout.tv_sec = 600; @@ -103,7 +105,7 @@ if(event->fn) { int saved_ev = event->events; - if(!event->fn(ev, event)) { + if(!event->fn(h, event)) { // ret 0 => remove event if(event->finish) { @@ -145,12 +147,12 @@ Event *event = finished[i]; // check again if the finish callback is set if(finished[i]->finish) { - finished[i]->finish(ev, event); + finished[i]->finish(h, event); } } // execute return calls - for(int i=0;inumret;i++) { - EVReturn ret = ev->fnreturn[i]; + for(int i=0;ibase.numret;i++) { + EVReturn ret = ev->base.fnreturn[i]; nsapi_saf_return(ret.sn, ret.rq, ret.ret); } } @@ -215,8 +217,3 @@ int event_removepoll(EventHandler *ev, SYS_NETFD fd) { return ((IOStream*)fd)->poll(fd, ev, IO_POLL_NONE, NULL); } - - -void ev_saf_return(EventHandler *h, Session *sn, Request *rq, int ret) { - h->fnreturn[h->numret++] = (EVReturn){ sn, rq, ret }; -}