diff options
author | Denis Yeldandi <dyeldandi@gramant.ru> | 2017-02-09 10:22:37 +0300 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-02-12 00:06:04 +0100 |
commit | 9814be4bc28892d1e0a5dc875fef0b4bde455d23 (patch) | |
tree | e8fea49c6531994783f68a470e8569d4ffe70fd1 | |
parent | db7c0badd477244e3b86c1624bd506651bdea0ba (diff) | |
download | php-git-9814be4bc28892d1e0a5dc875fef0b4bde455d23.tar.gz |
Fixed bug #69860
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | main/fastcgi.c | 10 | ||||
-rw-r--r-- | main/fastcgi.h | 1 | ||||
-rw-r--r-- | sapi/fpm/fpm/fpm_main.c | 3 |
4 files changed, 13 insertions, 5 deletions
@@ -14,6 +14,10 @@ PHP NEWS . Fixed bug #61471 (Incomplete POST does not timeout but is passed to PHP). (Zheng Shao) +- FPM: + . Fixed bug #69860 (php-fpm process accounting is broken with keepalive). + (Denis Yeldandi) + - GD: . Fixed bug #74031 (ReflectionFunction for imagepng is missing last two parameters). (finwe) diff --git a/main/fastcgi.c b/main/fastcgi.c index dd7c7ddeb9..39bfd34531 100644 --- a/main/fastcgi.c +++ b/main/fastcgi.c @@ -462,6 +462,11 @@ void fcgi_terminate(void) in_shutdown = 1; } +void fcgi_request_set_keep(fcgi_request *req, int new_value) +{ + req->keep = new_value; +} + #ifndef HAVE_ATTRIBUTE_WEAK void fcgi_set_logger(fcgi_logger lg) { fcgi_log = lg; @@ -1426,8 +1431,6 @@ int fcgi_accept_request(fcgi_request *req) struct pollfd fds; int ret; - req->hook.on_read(); - fds.fd = req->fd; fds.events = POLLIN; fds.revents = 0; @@ -1440,8 +1443,6 @@ int fcgi_accept_request(fcgi_request *req) } fcgi_close(req, 1, 0); #else - req->hook.on_read(); - if (req->fd < FD_SETSIZE) { struct timeval tv = {5,0}; fd_set set; @@ -1468,6 +1469,7 @@ int fcgi_accept_request(fcgi_request *req) } else if (in_shutdown) { return -1; } + req->hook.on_read(); if (fcgi_read_request(req)) { #ifdef _WIN32 if (is_impersonate && !req->tcp) { diff --git a/main/fastcgi.h b/main/fastcgi.h index bba64016d8..925d60c9bb 100644 --- a/main/fastcgi.h +++ b/main/fastcgi.h @@ -102,6 +102,7 @@ int fcgi_accept_request(fcgi_request *req); int fcgi_finish_request(fcgi_request *req, int force_close); const char *fcgi_get_last_client_ip(); void fcgi_set_in_shutdown(int new_value); +void fcgi_request_set_keep(fcgi_request *req, int new_value); #ifndef HAVE_ATTRIBUTE_WEAK typedef void (*fcgi_logger)(int type, const char *fmt, ...); diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c index 3ab92b3070..695839cd9a 100644 --- a/sapi/fpm/fpm/fpm_main.c +++ b/sapi/fpm/fpm/fpm_main.c @@ -1996,7 +1996,8 @@ fastcgi_request_done: requests++; if (UNEXPECTED(max_requests && (requests == max_requests))) { - fcgi_finish_request(request, 1); + fcgi_request_set_keep(request, 0); + fcgi_finish_request(request, 0); break; } /* end of fastcgi loop */ |