BUG/MEDIUM: peers: Don't start resync on reload if local peer is not up-to-date

On a reload, if the previous resync was not finished, the freshly old worker
must not try to start a new resync. Otherwise, it will compete with the
older wokers, slowing down or blocking the resync. Only an up-to-date woker
must try to perform a local resync.

This patch must be backported as far as 2.0 (and maybe to 1.8 too).

(cherry picked from commit b372f16d352bfa20a3abbd60003e113976d16c9c)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 2fcf579b0ec5f328c1c5859067604ac1a4229a1e)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
(cherry picked from commit 171894765303ca4a2b204a7ed12bb18c789b4727)
Signed-off-by: Christopher Faulet <cfaulet@haproxy.com>
diff --git a/src/peers.c b/src/peers.c
index 49d8558..fa428d3 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -3158,12 +3158,14 @@
 				peers->resync_timeout = tick_add(now_ms, MS_TO_TICKS(PEER_RESYNC_TIMEOUT));
 
 			/* If there's no active peer connection */
-			if (!tick_is_expired(peers->resync_timeout, now_ms) &&
+			if ((peers->flags & PEERS_RESYNC_STATEMASK) == PEERS_RESYNC_FINISHED &&
+			    !tick_is_expired(peers->resync_timeout, now_ms) &&
 			    (ps->statuscode == 0 ||
 			     ps->statuscode == PEER_SESS_SC_SUCCESSCODE ||
 			     ps->statuscode == PEER_SESS_SC_CONNECTEDCODE ||
 			     ps->statuscode == PEER_SESS_SC_TRYAGAIN)) {
-				/* The resync timeout is not expired and
+				/* The resync is finished for the local peer and
+				 *   the resync timeout is not expired and
 				 *   connection never tried
 				 *   or previous peer connection was successfully established
 				 *   or previous tcp connect succeeded but init state incomplete