diff -r 1e117b5d6710 -r 9b15b1f72bef src/server/daemon/event_solaris.c --- a/src/server/daemon/event_solaris.c Sun Jun 02 13:07:48 2024 +0200 +++ b/src/server/daemon/event_solaris.c Sun Jun 02 14:28:17 2024 +0200 @@ -34,6 +34,8 @@ #include "event_solaris.h" +#include "httprequest.h" + EVHandler* evhandler_create(EventHandlerConfig *cfg) { EVHandler *ev = malloc(sizeof(EVHandler)); ev->current = 0; @@ -61,7 +63,6 @@ return ev; } -#define EV_MAX_EVENTS 32 void ev_handle_events(EventHandler *ev) { port_event_t events[EV_MAX_EVENTS]; @@ -81,6 +82,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); + } } } @@ -225,3 +232,7 @@ 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 }; +}