Skip to content

Commit 8c7a5a6

Browse files
authored
"Skip public msg send" flag for custom overlays (#1757)
1 parent 8a971be commit 8c7a5a6

File tree

5 files changed

+19
-7
lines changed

5 files changed

+19
-7
lines changed

tl/generate/scheme/ton_api.tl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ engine.validator.config out_port:int addrs:(vector engine.Addr) adnl:(vector eng
691691

692692
engine.validator.customOverlayNode adnl_id:int256 msg_sender:Bool msg_sender_priority:int block_sender:Bool = engine.validator.CustomOverlayNode;
693693
engine.validator.customOverlay name:string nodes:(vector engine.validator.customOverlayNode) sender_shards:(vector tonNode.shardId)
694-
= engine.validator.CustomOverlay;
694+
skip_public_msg_send:Bool = engine.validator.CustomOverlay;
695695
engine.validator.customOverlaysConfig overlays:(vector engine.validator.customOverlay) = engine.validator.CustomOverlaysConfig;
696696

697697
engine.validator.collatorOptions

tl/generate/scheme/ton_api.tlo

48 Bytes
Binary file not shown.

validator-engine-console/validator-engine-console-query.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1294,6 +1294,9 @@ td::Status ShowCustomOverlaysQuery::receive(td::BufferSlice data) {
12941294
td::TerminalIO::out() << " " << ton::create_shard_id(shard).to_str() << "\n";
12951295
}
12961296
}
1297+
if (overlay->skip_public_msg_send_) {
1298+
td::TerminalIO::out() << "Don't send external messages to public overlays\n";
1299+
}
12971300
td::TerminalIO::out() << "\n";
12981301
}
12991302
return td::Status::OK();

validator/full-node.cpp

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -318,21 +318,28 @@ void FullNodeImpl::send_ihr_message(AccountIdPrefixFull dst, td::BufferSlice dat
318318
}
319319

320320
void FullNodeImpl::send_ext_message(AccountIdPrefixFull dst, td::BufferSlice data) {
321-
auto shard = get_shard(dst);
322-
if (shard.empty()) {
323-
VLOG(FULL_NODE_WARNING) << "dropping OUT ext message to unknown shard";
324-
return;
325-
}
321+
bool skip_public = false;
326322
for (auto &[_, private_overlay] : custom_overlays_) {
327323
if (private_overlay.params_.send_shard(dst.as_leaf_shard())) {
328324
for (auto &[local_id, actor] : private_overlay.actors_) {
329325
if (private_overlay.params_.msg_senders_.contains(local_id)) {
330326
td::actor::send_closure(actor, &FullNodeCustomOverlay::send_external_message, data.clone());
327+
if (private_overlay.params_.skip_public_msg_send_) {
328+
skip_public = true;
329+
}
331330
}
332331
}
333332
}
334333
}
335-
td::actor::send_closure(shard, &FullNodeShard::send_external_message, std::move(data));
334+
335+
if (!skip_public) {
336+
auto shard = get_shard(dst);
337+
if (shard.empty()) {
338+
VLOG(FULL_NODE_WARNING) << "dropping OUT ext message to unknown shard";
339+
return;
340+
}
341+
td::actor::send_closure(shard, &FullNodeShard::send_external_message, std::move(data));
342+
}
336343
}
337344

338345
void FullNodeImpl::send_shard_block_info(BlockIdExt block_id, CatchainSeqno cc_seqno, td::BufferSlice data) {
@@ -964,6 +971,7 @@ CustomOverlayParams CustomOverlayParams::fetch(const ton_api::engine_validator_c
964971
for (const auto &shard : f.sender_shards_) {
965972
c.sender_shards_.push_back(create_shard_id(shard));
966973
}
974+
c.skip_public_msg_send_ = f.skip_public_msg_send_;
967975
return c;
968976
}
969977

validator/full-node.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ struct CustomOverlayParams {
6767
std::map<adnl::AdnlNodeIdShort, int> msg_senders_;
6868
std::set<adnl::AdnlNodeIdShort> block_senders_;
6969
std::vector<ShardIdFull> sender_shards_;
70+
bool skip_public_msg_send_ = false;
7071

7172
bool send_shard(const ShardIdFull& shard) const;
7273
static CustomOverlayParams fetch(const ton_api::engine_validator_customOverlay& f);

0 commit comments

Comments
 (0)