commit:     dc8d1598df949105b59ad6d7fda54cc67dbb24e9
Author:     Bertrand Jacquin <bertrand <AT> jacquin <DOT> bzh>
AuthorDate: Tue Dec 13 00:43:48 2016 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Mon May 22 18:43:39 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=dc8d1598

net-proxy/haproxy: Handle stopping multiple proc

When haproxy is configured to use more than 1 proc, it creates a PID
file listing all PID, with 1 PID per line. Since start-stop-daemon only
handle 1 PID per pidfile, we need to had some magic in the init script in
order to stop every process haproxy previously started.

See: https://bugs.gentoo.org/show_bug.cgi?id=584410

Package-Manager: portage-2.3.0
(cherry picked from commit 551acd9853212fd0debf4563312af88908b7b497)
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>
Fixes: https://github.com/gentoo/gentoo/pull/3104/

 net-proxy/haproxy/files/haproxy.initd-r3 | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/net-proxy/haproxy/files/haproxy.initd-r3 
b/net-proxy/haproxy/files/haproxy.initd-r3
index 2ad38fc9ebc..abba9f86534 100644
--- a/net-proxy/haproxy/files/haproxy.initd-r3
+++ b/net-proxy/haproxy/files/haproxy.initd-r3
@@ -60,6 +60,17 @@ stop_pre() {
        fi
 }
 
+stop() {
+       local _t _pid
+
+       _t="$(mktemp)"
+       for _pid in $(cat ${pidfile}) ; do
+               echo "${_pid}" > "${_t}"
+               pidfile="${_t}" openrc_default_stop
+       done
+       rm -f "${_t}"
+}
+
 reload() {
        checkconfig || { eerror "Reloading failed, please fix your config(s) 
first"; return 1; }
 

Reply via email to