From 68567c0e1f5d25c7115816fe7e079d6d28c9ec23 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sun, 4 Apr 2021 11:05:49 +0300 Subject: [PATCH] Fix messenger possibly trying to connect to the same OSD twice --- src/messenger.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/messenger.cpp b/src/messenger.cpp index f6a8510c8..5854c100e 100644 --- a/src/messenger.cpp +++ b/src/messenger.cpp @@ -127,17 +127,14 @@ void osd_messenger_t::connect_peer(uint64_t peer_osd, json11::Json peer_state) wanted_peers[peer_osd].port = (int)peer_state["port"].int64_value(); } wanted_peers[peer_osd].address_changed = true; - if (!wanted_peers[peer_osd].connecting && - (time(NULL) - wanted_peers[peer_osd].last_connect_attempt) >= peer_connect_interval) - { - try_connect_peer(peer_osd); - } + try_connect_peer(peer_osd); } void osd_messenger_t::try_connect_peer(uint64_t peer_osd) { auto wp_it = wanted_peers.find(peer_osd); - if (wp_it == wanted_peers.end()) + if (wp_it == wanted_peers.end() || wp_it->second.connecting || + (time(NULL) - wp_it->second.last_connect_attempt) < peer_connect_interval) { return; }