diff -r 9b15b1f72bef -r d8212d4f24f2 src/server/safs/cgi.c --- a/src/server/safs/cgi.c Sun Jun 02 14:28:17 2024 +0200 +++ b/src/server/safs/cgi.c Sun Jun 02 16:02:36 2024 +0200 @@ -313,7 +313,7 @@ log_ereport(LOG_DEBUG, "cgi-send: req: %p debug_finished: 1 cgi_stdout_readevent events: %d", handler->parser->rq, handler->events); } - if(handler->cgi_eof) { + if(handler->cgi_eof || handler->result == REQ_ABORTED) { // cgi_eof will be set to true by cgi_read_output // if it is true here, the cgi handling was finished by cgi_writeevent // in that case, cgi_writeevent will finish the request processing @@ -358,8 +358,8 @@ int cgi_writeevent(EventHandler *ev, Event *event) { CGIHandler *handler = event->cookie; - if(handler->cgi_eof) { - log_ereport(LOG_DEBUG, "cgi-send: req: %p writeevent cgi_eof = TRUE", handler->parser->rq); + if(handler->cgi_eof || handler->result == REQ_ABORTED) { + log_ereport(LOG_DEBUG, "cgi-send: req: %p writeevent cgi_eof = TRUE result: %d", handler->parser->rq, handler->result); } event->finish = cgi_event_finish; @@ -582,6 +582,9 @@ 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); handler->debug_finished = TRUE; + if(event->fn != cgi_stderr_readevent) { + handler->cgi_eof = TRUE; + } if(handler->result == REQ_ABORTED && handler->process.pid != 0 && handler->cgi_kill == 0) { log_ereport(LOG_FAILURE, "cgi-send: kill script: %s pid: %d", handler->path, (int)handler->process.pid);