]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: peers: Reprocess peer state after all session shutdowns
authorChristopher Faulet <cfaulet@haproxy.com>
Wed, 24 Apr 2024 14:38:13 +0000 (16:38 +0200)
committerChristopher Faulet <cfaulet@haproxy.com>
Thu, 25 Apr 2024 16:29:57 +0000 (18:29 +0200)
When a session is shut down, the peer is switched in released state
(PEER_F_ST_RELEASED) and the sync task must process it to eventually
perform some clean up, in case the peer was assigned to learn.

However, this was only true when the session was shut down from the peer
applet itself. This was not performed when it was shut down from the sync
task. It is now fixed.

src/peers.c

index 55af758535c0fec4205276e0f86271eec7c80099..cf2d92683b856db16087404c26f3eab7b748f834 100644 (file)
@@ -3566,6 +3566,7 @@ static void __process_running_peer_sync(struct task *task, struct peers *peers,
                                                                ps->reconnect = tick_add(now_ms, MS_TO_TICKS(50 + ha_random() % 2000));
                                                                ps->heartbeat = TICK_ETERNITY;
                                                                peer_session_forceshutdown(ps);
+                                                               __process_peer_state(peers, ps);
                                                                ps->no_hbt++;
                                                        }
                                                }
@@ -3626,6 +3627,7 @@ static void __process_stopping_peer_sync(struct task *task, struct peers *peers,
                        ps->reconnect = tick_add(now_ms, MS_TO_TICKS(50 + ha_random() % 2000));
                        if (ps->appctx) {
                                peer_session_forceshutdown(ps);
+                               __process_peer_state(peers, ps);
                        }
                }