diff -r 1e117b5d6710 -r 9b15b1f72bef src/server/daemon/event_linux.c --- a/src/server/daemon/event_linux.c Sun Jun 02 13:07:48 2024 +0200 +++ b/src/server/daemon/event_linux.c Sun Jun 02 14:28:17 2024 +0200 @@ -40,6 +40,8 @@ #include "event.h" #include "event_linux.h" +#include "httprequest.h" + EVHandler* evhandler_create(EventHandlerConfig *cfg) { EVHandler *ev = malloc(sizeof(EVHandler)); @@ -84,8 +86,6 @@ return ev; } -#define EV_MAX_EVENTS 32 - void ev_handle_events(EventHandler *ev) { int ep = ev->ep; @@ -101,6 +101,7 @@ } 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); + } } } @@ -244,3 +250,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 }; +}