Skip to content

Commit eed3153

Browse files
authored
Merge pull request #1316 from ton-blockchain/testnet
Fix updating neighbors in private overlays (#1314)
2 parents d4de286 + 0862cca commit eed3153

File tree

3 files changed

+6
-10
lines changed

3 files changed

+6
-10
lines changed

overlay/overlay-peers.cpp

+4-8
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,8 @@ void OverlayImpl::update_neighbours(td::uint32 nodes_to_change) {
407407
continue;
408408
}
409409

410-
if (X->get_version() <= td::Clocks::system() - Overlays::overlay_peer_ttl()) {
410+
if (overlay_type_ != OverlayType::FixedMemberList && X->get_version() <= td::Clocks::system() -
411+
Overlays::overlay_peer_ttl()) {
411412
if (X->is_permanent_member()) {
412413
del_from_neighbour_list(X);
413414
} else {
@@ -656,14 +657,9 @@ size_t OverlayImpl::neighbours_cnt() const {
656657

657658
void OverlayImpl::update_root_member_list(std::vector<adnl::AdnlNodeIdShort> ids,
658659
std::vector<PublicKeyHash> root_public_keys, OverlayMemberCertificate cert) {
659-
td::uint32 expectd_size =
660+
auto expected_size =
660661
(td::uint32)(ids.size() + root_public_keys.size() * opts_.max_slaves_in_semiprivate_overlay_);
661-
if (expectd_size > opts_.max_peers_) {
662-
opts_.max_peers_ = expectd_size;
663-
}
664-
if (expectd_size > opts_.max_neighbours_) {
665-
opts_.max_neighbours_ = expectd_size;
666-
}
662+
opts_.max_peers_ = std::max(opts_.max_peers_, expected_size);
667663
std::sort(ids.begin(), ids.end());
668664
auto old_root_public_keys = std::move(peer_list_.root_public_keys_);
669665
for (const auto &pub_key : root_public_keys) {

overlay/overlay.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class Overlay : public td::actor::Actor {
7878
bool is_response) = 0;
7979
virtual void update_peer_ip_str(adnl::AdnlNodeIdShort peer_id, td::string ip_str) = 0;
8080
virtual void update_member_certificate(OverlayMemberCertificate cert) = 0;
81-
virtual void update_root_member_list(std::vector<adnl::AdnlNodeIdShort> nodes,
81+
virtual void update_root_member_list(std::vector<adnl::AdnlNodeIdShort> ids,
8282
std::vector<PublicKeyHash> root_public_keys, OverlayMemberCertificate cert) = 0;
8383
//virtual void receive_broadcast(td::BufferSlice data) = 0;
8484
//virtual void subscribe(std::unique_ptr<Overlays::Callback> callback) = 0;

overlay/overlay.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ class OverlayImpl : public Overlay {
280280

281281
void update_peer_ip_str(adnl::AdnlNodeIdShort peer_id, td::string ip_str) override;
282282

283-
void update_root_member_list(std::vector<adnl::AdnlNodeIdShort> nodes, std::vector<PublicKeyHash> root_public_keys,
283+
void update_root_member_list(std::vector<adnl::AdnlNodeIdShort> ids, std::vector<PublicKeyHash> root_public_keys,
284284
OverlayMemberCertificate cert) override;
285285

286286
bool is_valid_peer(const adnl::AdnlNodeIdShort &id, const ton_api::overlay_MemberCertificate *certificate);

0 commit comments

Comments
 (0)