mirror of
https://github.com/ton-blockchain/ton
synced 2025-03-09 15:40:10 +00:00
Add network id to dht (#559)
Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
parent
15cdfb0462
commit
3ff50f5f47
15 changed files with 231 additions and 172 deletions
|
@ -20,14 +20,11 @@
|
|||
|
||||
#include "td/utils/tl_storers.h"
|
||||
#include "td/utils/crypto.h"
|
||||
#include "td/utils/tl_parsers.h"
|
||||
#include "td/utils/Random.h"
|
||||
#include "td/utils/overloaded.h"
|
||||
|
||||
#include "td/utils/format.h"
|
||||
|
||||
#include "keys/encryptor.h"
|
||||
|
||||
#include "auto/tl/ton_api.hpp"
|
||||
|
||||
#include "dht-query.hpp"
|
||||
|
@ -123,7 +120,7 @@ void DhtQueryFindNodes::on_result(td::Result<td::BufferSlice> R, adnl::AdnlNodeI
|
|||
VLOG(DHT_WARNING) << this << ": incorrect result on dht.findNodes query from " << dst << ": "
|
||||
<< Res.move_as_error();
|
||||
} else {
|
||||
add_nodes(DhtNodesList{Res.move_as_ok()});
|
||||
add_nodes(DhtNodesList{Res.move_as_ok(), our_network_id()});
|
||||
}
|
||||
finish_query();
|
||||
}
|
||||
|
@ -185,27 +182,29 @@ void DhtQueryFindValue::on_result(td::Result<td::BufferSlice> R, adnl::AdnlNodeI
|
|||
|
||||
auto A = Res.move_as_ok();
|
||||
ton_api::downcast_call(
|
||||
*A.get(), td::overloaded(
|
||||
[&](ton_api::dht_valueFound &v) {
|
||||
auto valueR = DhtValue::create(std::move(v.value_), true);
|
||||
if (valueR.is_error()) {
|
||||
VLOG(DHT_WARNING) << this << ": received incorrect dht answer on find value query from " << dst
|
||||
<< ": " << valueR.move_as_error();
|
||||
return;
|
||||
}
|
||||
auto value = valueR.move_as_ok();
|
||||
if (value.key_id() != key_) {
|
||||
VLOG(DHT_WARNING) << this << ": received value for bad key on find value query from " << dst;
|
||||
return;
|
||||
}
|
||||
if (!value.check_is_acceptable()) {
|
||||
send_get_nodes = true;
|
||||
return;
|
||||
}
|
||||
promise_.set_value(std::move(value));
|
||||
need_stop = true;
|
||||
},
|
||||
[&](ton_api::dht_valueNotFound &v) { add_nodes(DhtNodesList{std::move(v.nodes_)}); }));
|
||||
*A, td::overloaded(
|
||||
[&](ton_api::dht_valueFound &v) {
|
||||
auto valueR = DhtValue::create(std::move(v.value_), true);
|
||||
if (valueR.is_error()) {
|
||||
VLOG(DHT_WARNING) << this << ": received incorrect dht answer on find value query from " << dst
|
||||
<< ": " << valueR.move_as_error();
|
||||
return;
|
||||
}
|
||||
auto value = valueR.move_as_ok();
|
||||
if (value.key_id() != key_) {
|
||||
VLOG(DHT_WARNING) << this << ": received value for bad key on find value query from " << dst;
|
||||
return;
|
||||
}
|
||||
if (!value.check_is_acceptable()) {
|
||||
send_get_nodes = true;
|
||||
return;
|
||||
}
|
||||
promise_.set_value(std::move(value));
|
||||
need_stop = true;
|
||||
},
|
||||
[&](ton_api::dht_valueNotFound &v) {
|
||||
add_nodes(DhtNodesList{std::move(v.nodes_), our_network_id()});
|
||||
}));
|
||||
if (need_stop) {
|
||||
stop();
|
||||
} else if (send_get_nodes) {
|
||||
|
@ -229,7 +228,7 @@ void DhtQueryFindValue::on_result_nodes(td::Result<td::BufferSlice> R, adnl::Adn
|
|||
return;
|
||||
}
|
||||
auto r = Res.move_as_ok();
|
||||
add_nodes(DhtNodesList{create_tl_object<ton_api::dht_nodes>(std::move(r->nodes_))});
|
||||
add_nodes(DhtNodesList{create_tl_object<ton_api::dht_nodes>(std::move(r->nodes_)), our_network_id()});
|
||||
finish_query();
|
||||
}
|
||||
|
||||
|
@ -238,12 +237,13 @@ void DhtQueryFindValue::finish(DhtNodesList list) {
|
|||
}
|
||||
|
||||
DhtQueryStore::DhtQueryStore(DhtValue key_value, DhtMember::PrintId print_id, adnl::AdnlNodeIdShort src,
|
||||
DhtNodesList list, td::uint32 k, td::uint32 a, DhtNode self, bool client_only,
|
||||
td::actor::ActorId<DhtMember> node, td::actor::ActorId<adnl::Adnl> adnl,
|
||||
DhtNodesList list, td::uint32 k, td::uint32 a, td::int32 our_network_id, DhtNode self,
|
||||
bool client_only, td::actor::ActorId<DhtMember> node, td::actor::ActorId<adnl::Adnl> adnl,
|
||||
td::Promise<td::Unit> promise)
|
||||
: print_id_(print_id)
|
||||
, k_(k)
|
||||
, a_(a)
|
||||
, our_network_id_(our_network_id)
|
||||
, promise_(std::move(promise))
|
||||
, value_(std::move(key_value))
|
||||
, list_(std::move(list))
|
||||
|
@ -261,7 +261,8 @@ void DhtQueryStore::start_up() {
|
|||
|
||||
auto key = value_.key_id();
|
||||
auto A = td::actor::create_actor<DhtQueryFindNodes>("FindNodesQuery", key, print_id_, src_, std::move(list_), k_, a_,
|
||||
self_.clone(), client_only_, node_, adnl_, std::move(P));
|
||||
our_network_id_, self_.clone(), client_only_, node_, adnl_,
|
||||
std::move(P));
|
||||
A.release();
|
||||
}
|
||||
|
||||
|
@ -323,12 +324,13 @@ void DhtQueryStore::store_ready(td::Result<td::BufferSlice> R) {
|
|||
|
||||
DhtQueryRegisterReverseConnection::DhtQueryRegisterReverseConnection(
|
||||
DhtKeyId key_id, adnl::AdnlNodeIdFull client, td::uint32 ttl, td::BufferSlice signature,
|
||||
DhtMember::PrintId print_id, adnl::AdnlNodeIdShort src, DhtNodesList list, td::uint32 k, td::uint32 a, DhtNode self,
|
||||
bool client_only, td::actor::ActorId<DhtMember> node, td::actor::ActorId<adnl::Adnl> adnl,
|
||||
td::Promise<td::Unit> promise)
|
||||
DhtMember::PrintId print_id, adnl::AdnlNodeIdShort src, DhtNodesList list, td::uint32 k, td::uint32 a,
|
||||
td::int32 our_network_id, DhtNode self, bool client_only, td::actor::ActorId<DhtMember> node,
|
||||
td::actor::ActorId<adnl::Adnl> adnl, td::Promise<td::Unit> promise)
|
||||
: print_id_(print_id)
|
||||
, k_(k)
|
||||
, a_(a)
|
||||
, our_network_id_(our_network_id)
|
||||
, promise_(std::move(promise))
|
||||
, key_id_(key_id)
|
||||
, list_(std::move(list))
|
||||
|
@ -346,7 +348,8 @@ void DhtQueryRegisterReverseConnection::start_up() {
|
|||
});
|
||||
|
||||
auto A = td::actor::create_actor<DhtQueryFindNodes>("FindNodesQuery", key_id_, print_id_, src_, std::move(list_), k_,
|
||||
a_, self_.clone(), client_only_, node_, adnl_, std::move(P));
|
||||
a_, our_network_id_, self_.clone(), client_only_, node_, adnl_,
|
||||
std::move(P));
|
||||
A.release();
|
||||
}
|
||||
|
||||
|
@ -437,7 +440,7 @@ void DhtQueryRequestReversePing::on_result(td::Result<td::BufferSlice> R, adnl::
|
|||
stop();
|
||||
},
|
||||
[&](ton_api::dht_clientNotFound &v) {
|
||||
add_nodes(DhtNodesList{std::move(v.nodes_)});
|
||||
add_nodes(DhtNodesList{std::move(v.nodes_), our_network_id()});
|
||||
finish_query();
|
||||
}));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue