# HG changeset patch
# User Olaf Wintermann <olaf.wintermann@gmail.com>
# Date 1716468993 -7200
# Node ID 0b09f0cb609899f9de5999139e943393b6411b9a
# Parent  857e5b92828bb3a0e7bc064741b412761e9442c6
add wait_read to cgi debug logging

diff -r 857e5b92828b -r 0b09f0cb6098 src/server/safs/cgi.c
--- a/src/server/safs/cgi.c	Thu May 23 12:31:30 2024 +0200
+++ b/src/server/safs/cgi.c	Thu May 23 14:56:33 2024 +0200
@@ -327,6 +327,7 @@
                 handler->result = REQ_ABORTED;
             } else {
                 handler->poll_out = TRUE;
+                handler->events++;
                 log_ereport(LOG_DEBUG, "cgi-send: req: %p enable poll out", handler->parser->rq);
                 return 1; // keep readevent active
             }
@@ -559,7 +560,18 @@
     } else if(event->fn == cgi_writeevent) {
         event_fn = "httpout";
     }
-    log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: event: %d pollout: %d cgi_eof: %d fn: %s", rq, handler->events, handler->poll_out, handler->cgi_eof, event_fn);
+    log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: event: %d pollout: %d wait_read: %d cgi_eof: %d fn: %s", rq, handler->events, handler->poll_out, handler->wait_read, handler->cgi_eof, event_fn);
+    
+    if(handler->poll_out) {
+        // write event registered, however it will not be activated anymore
+        // we can safely remove the event
+        log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: remove-poll write", rq);
+        if(event_removepoll(ev, sn->csd)) {
+            log_ereport(LOG_FAILURE, "cgi_event_finish: event_removepoll: %s", strerror(errno));
+        }
+        handler->events--;
+        handler->poll_out = FALSE;
+    }
     
     if(--handler->events > 0) {
         return 0;
@@ -588,14 +600,6 @@
         }
     }
     */
-    if(handler->poll_out) {
-        // write event registered, however it will not be activated anymore
-        // we can safely remove the event
-        log_ereport(LOG_DEBUG, "cgi-send: req: %p finish: remove-poll write", rq);
-        if(event_removepoll(ev, sn->csd)) {
-            log_ereport(LOG_FAILURE, "cgi_event_finish: event_removepoll: %s", strerror(errno));
-        }
-    }
     
     if(handler->result == REQ_ABORTED && handler->process.pid != 0) {
         log_ereport(LOG_FAILURE, "cgi-send: kill script: %s", handler->path);