diff -r 1e117b5d6710 -r 9b15b1f72bef src/server/daemon/event_bsd.c --- a/src/server/daemon/event_bsd.c Sun Jun 02 13:07:48 2024 +0200 +++ b/src/server/daemon/event_bsd.c Sun Jun 02 14:28:17 2024 +0200 @@ -34,6 +34,8 @@ #include "event_bsd.h" +#include "httprequest.h" + EVHandler* evhandler_create(EventHandlerConfig *cfg) { EVHandler *ev = malloc(sizeof(EVHandler)); ev->current = 0; @@ -62,8 +64,6 @@ } -#define EV_MAX_EVENTS 32 - void ev_handle_events(EventHandler *ev) { struct timespec timeout; timeout.tv_nsec = 0; @@ -85,6 +85,7 @@ numchanges = 0; int numfinished = 0; + ev->numret = 0; for(int i=0;ifinish(ev, event); } + // execute return calls + for(int i=0;inumret;i++) { + EVReturn ret = ev->fnreturn[i]; + nsapi_saf_return(ret.sn, ret.rq, ret.ret); + } } } @@ -206,3 +212,8 @@ 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 }; +}