com php-src: Fixed bug #69860: NEWS main/fastcgi.c main/fastcgi.h sapi/fpm/fpm/fpm_main.c

[email protected] (Nikita Popov)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    9814be4bc28892d1e0a5dc875fef0b4bde455d23
Author:    Denis Yeldandi <[email protected]>         Thu, 9 Feb 2017 10:22:37 +0300
Committer: Nikita Popov <[email protected]>      Sun, 12 Feb 2017 00:06:04 +0100
Parents:   db7c0badd477244e3b86c1624bd506651bdea0ba
Branches:  PHP-7.0 PHP-7.1 master

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=9814be4bc28892d1e0a5dc875fef0b4bde455d23

Log:
Fixed bug #69860

Bugs:
https://bugs.php.net/69860

Changed paths:
  M  NEWS
  M  main/fastcgi.c
  M  main/fastcgi.h
  M  sapi/fpm/fpm/fpm_main.c


Diff:
diff --git a/NEWS b/NEWS
index ccd6c85..24f5d0f 100644
--- a/NEWS
+++ b/NEWS
@@ -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 dd7c7dd..39bfd34 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 bba6401..925d60c 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 3ab92b3..695839c 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 */
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.