summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2017-02-12 00:06:20 +0100
committerNikita Popov <nikita.ppv@gmail.com>2017-02-12 00:06:35 +0100
commit6d5ea20e0b0986a5d763ba39c5ad4773c2d6ade6 (patch)
tree1313fd2a4ee26d64b7a27c812d322b5637715e93
parentbf2627e58c7654d1d99dd4822055a71007cf9b33 (diff)
parent9814be4bc28892d1e0a5dc875fef0b4bde455d23 (diff)
downloadphp-git-6d5ea20e0b0986a5d763ba39c5ad4773c2d6ade6.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
-rw-r--r--NEWS4
-rw-r--r--main/fastcgi.c10
-rw-r--r--main/fastcgi.h1
-rw-r--r--sapi/fpm/fpm/fpm_main.c3
4 files changed, 13 insertions, 5 deletions
diff --git a/NEWS b/NEWS
index 302da8d3a2..7fd2eee24b 100644
--- a/NEWS
+++ b/NEWS
@@ -17,6 +17,10 @@ PHP NEWS
. Fixed bug #73837 ("new DateTime()" sometimes returns 1 second ago value).
(Derick)
+- 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 0da9c3873e..cca4342f2a 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;
@@ -1429,8 +1434,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;
@@ -1443,8 +1446,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;
@@ -1471,6 +1472,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 efadac61d2..4cafc69c6e 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, ...) ZEND_ATTRIBUTE_FORMAT(printf, 2, 3);
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
index 3b33141aee..ce9b85620b 100644
--- a/sapi/fpm/fpm/fpm_main.c
+++ b/sapi/fpm/fpm/fpm_main.c
@@ -1995,7 +1995,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 */