[BUG] proxy: peers must only be stopped once, not upon every call to maintain_proxies
Peers were stopped on every call to maintain_proxies when stopping=1,
while they should only be stopped once upon call to soft_stop(). This
bug has little impact, mostly increased CPU usage. It's not needed to
backport it.
diff --git a/src/proxy.c b/src/proxy.c
index bd639fa..17063a6 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -518,8 +518,6 @@
}
if (stopping) {
- struct peers *prs;
-
p = proxy;
while (p) {
if (p->state != PR_STSTOPPED) {
@@ -540,13 +538,6 @@
}
p = p->next;
}
-
- prs = peers;
- while (prs) {
- stop_proxy((struct proxy *)prs->peers_fe);
- prs = prs->next;
- }
-
}
return;
}
@@ -560,6 +551,7 @@
void soft_stop(void)
{
struct proxy *p;
+ struct peers *prs;
stopping = 1;
p = proxy;
@@ -575,6 +567,12 @@
p = p->next;
}
+
+ prs = peers;
+ while (prs) {
+ stop_proxy((struct proxy *)prs->peers_fe);
+ prs = prs->next;
+ }
/* signal zero is used to broadcast the "stopping" event */
signal_handler(0);
}