summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Zelenka <bukka@php.net>2019-05-11 20:07:39 +0100
committerJakub Zelenka <bukka@php.net>2019-05-11 20:07:39 +0100
commitcc5c51e7f0732067f105d13c6d355fcab5965c2f (patch)
treed3a9fc2ff6b2e13bcd21a3542a21dc91b8a8e35d
parentb15bfb9129eb7941b3643209243caba891e4d25d (diff)
downloadphp-git-cc5c51e7f0732067f105d13c6d355fcab5965c2f.tar.gz
Fix bug #77934 (php-fpm kill -USR2 not working)
-rw-r--r--NEWS1
-rw-r--r--sapi/fpm/fpm/fpm_signals.c2
-rw-r--r--sapi/fpm/tests/bug77934-reload-process-control.phpt44
3 files changed, 46 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index f774605940..c89f43a24b 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ PHP NEWS
?? ??? 2019, PHP 7.2.19
- FPM:
+ . Fixed bug #77934 (php-fpm kill -USR2 not working). (Jakub Zelenka)
. Fixed bug #77921 (static.php.net doesn't work anymore). (Peter Kokot)
- GD:
diff --git a/sapi/fpm/fpm/fpm_signals.c b/sapi/fpm/fpm/fpm_signals.c
index 0df119be38..4c9f9664f6 100644
--- a/sapi/fpm/fpm/fpm_signals.c
+++ b/sapi/fpm/fpm/fpm_signals.c
@@ -143,7 +143,7 @@ static void sig_soft_quit(int signo) /* {{{ */
int saved_errno = errno;
/* closing fastcgi listening socket will force fcgi_accept() exit immediately */
- close(0);
+ close(fpm_globals.listening_socket);
if (0 > socket(AF_UNIX, SOCK_STREAM, 0)) {
zlog(ZLOG_WARNING, "failed to create a new socket");
}
diff --git a/sapi/fpm/tests/bug77934-reload-process-control.phpt b/sapi/fpm/tests/bug77934-reload-process-control.phpt
new file mode 100644
index 0000000000..d223403f99
--- /dev/null
+++ b/sapi/fpm/tests/bug77934-reload-process-control.phpt
@@ -0,0 +1,44 @@
+--TEST--
+FPM: bug77934 - php-fpm kill -USR2 not working
+--SKIPIF--
+<?php include "skipif.inc"; ?>
+--FILE--
+<?php
+
+require_once "tester.inc";
+
+$cfg = <<<EOT
+[global]
+error_log = {{FILE:LOG}}
+pid = {{FILE:PID}}
+process_control_timeout=20
+[unconfined]
+listen = {{ADDR}}
+pm = dynamic
+pm.max_children = 5
+pm.start_servers = 1
+pm.min_spare_servers = 1
+pm.max_spare_servers = 1
+EOT;
+
+$tester = new FPM\Tester($cfg);
+$tester->start();
+$tester->expectLogStartNotices();
+$tester->signal('USR2');
+$tester->expectLogNotice('Reloading in progress ...');
+$tester->expectLogNotice('reloading: .*');
+$tester->expectLogNotice('using inherited socket fd=\d+, "127.0.0.1:\d+"');
+$tester->expectLogStartNotices();
+$tester->terminate();
+$tester->expectLogTerminatingNotices();
+$tester->close();
+
+?>
+Done
+--EXPECT--
+Done
+--CLEAN--
+<?php
+require_once "tester.inc";
+FPM\Tester::clean();
+?>