diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c index e3b10b67101..0bd73fd2f63 100644 --- a/sapi/cgi/cgi_main.c +++ b/sapi/cgi/cgi_main.c @@ -1338,6 +1338,10 @@ consult the installation file that came with this distribution, or visit \n\ exit(1); } + if (fcgi_in_shutdown()) { + exit(0); + } + while (parent) { do { #ifdef DEBUG_FASTCGI diff --git a/sapi/cgi/fastcgi.c b/sapi/cgi/fastcgi.c index 743c90eee94..06885bc2445 100644 --- a/sapi/cgi/fastcgi.c +++ b/sapi/cgi/fastcgi.c @@ -164,6 +164,11 @@ static void fcgi_signal_handler(int signo) #endif +int fcgi_in_shutdown(void) +{ + return in_shutdown; +} + int fcgi_init(void) { if (!is_initialized) { diff --git a/sapi/cgi/fastcgi.h b/sapi/cgi/fastcgi.h index 8a0c29f3dc9..940a9be55b9 100644 --- a/sapi/cgi/fastcgi.h +++ b/sapi/cgi/fastcgi.h @@ -110,6 +110,7 @@ typedef struct _fcgi_request { int fcgi_init(void); int fcgi_is_fastcgi(void); +int fcgi_in_shutdown(void); int fcgi_listen(const char *path, int backlog); void fcgi_init_request(fcgi_request *req, int listen_socket); int fcgi_accept_request(fcgi_request *req);