src/server/daemon/event_linux.c

changeset 531
9b15b1f72bef
parent 529
cd606400f0ba
child 533
2d6099ba2a7c
--- 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;i<ret;i++) {
             Event *event = events[i].data.ptr;
             if(!event) {
@@ -167,6 +168,11 @@
             Event *event = finished[i];
             finished[i]->finish(ev, event);
         }
+        // execute return calls
+        for(int i=0;i<ev->numret;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 };
+}

mercurial