Fix messenger possibly trying to connect to the same OSD twice

rel-0.5
Vitaliy Filippov 2021-04-04 11:05:49 +03:00
parent 04b00003e9
commit 68567c0e1f
1 changed files with 3 additions and 6 deletions

View File

@ -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].port = (int)peer_state["port"].int64_value();
} }
wanted_peers[peer_osd].address_changed = true; wanted_peers[peer_osd].address_changed = true;
if (!wanted_peers[peer_osd].connecting && try_connect_peer(peer_osd);
(time(NULL) - wanted_peers[peer_osd].last_connect_attempt) >= peer_connect_interval)
{
try_connect_peer(peer_osd);
}
} }
void osd_messenger_t::try_connect_peer(uint64_t peer_osd) void osd_messenger_t::try_connect_peer(uint64_t peer_osd)
{ {
auto wp_it = wanted_peers.find(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; return;
} }