fix cgi pipe fd initialization

Thu, 30 Oct 2025 16:59:31 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Thu, 30 Oct 2025 16:59:31 +0100
changeset 617
01228719b3ce
parent 616
7a0a364a1d67
child 618
e42a8de6d66f

fix cgi pipe fd initialization

src/server/daemon/event_linux.c file | annotate | diff | comparison | revisions
src/server/daemon/sessionhandler.c file | annotate | diff | comparison | revisions
src/server/safs/cgi.c file | annotate | diff | comparison | revisions
--- a/src/server/daemon/event_linux.c	Wed Oct 29 16:51:36 2025 +0100
+++ b/src/server/daemon/event_linux.c	Thu Oct 30 16:59:31 2025 +0100
@@ -63,6 +63,7 @@
             log_ereport(LOG_FAILURE, "evhandler_create: epoll_create: %s", strerror(errno));
             return NULL;
         }
+        log_ereport(LOG_DEBUG, "evhandler_create: epoll fd %d", handler->ep);
         
         handler->event_fd = eventfd(0, EFD_NONBLOCK);
         if(handler->event_fd < 0) {
--- a/src/server/daemon/sessionhandler.c	Wed Oct 29 16:51:36 2025 +0100
+++ b/src/server/daemon/sessionhandler.c	Thu Oct 30 16:59:31 2025 +0100
@@ -553,6 +553,9 @@
     return 0;
 }
 
+/*
+ * this function should only be used as event->finish func
+ */
 int evt_request_error(EventHandler *h, Event *event) { 
     EventHttpIO *io = event->cookie;
     HttpParser  *parser  = io->parser;
@@ -579,7 +582,7 @@
     http_parser_free(parser);
     
     free(io);
-    free(event); // TODO: is this safe??
+    free(event);
     log_ereport(LOG_DEBUG, "trace reqid: %016llx free event", (unsigned long long int)reqid);
     
     return 0;
--- a/src/server/safs/cgi.c	Wed Oct 29 16:51:36 2025 +0100
+++ b/src/server/safs/cgi.c	Thu Oct 30 16:59:31 2025 +0100
@@ -115,9 +115,9 @@
     handler->process.out[0] = -1;
     handler->process.out[1] = -1;
     handler->process.err[0] = -1;
-    handler->process.err[0] = -1;
+    handler->process.err[1] = -1;
     handler->process.in[0] = -1;
-    handler->process.in[0] = -1;
+    handler->process.in[1] = -1;
     handler->path = path;
     
     int ret = cgi_start(rq, &handler->process, path, argv, env);

mercurial