1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-02-12 11:12:16 +00:00

Fix DNS resolve in liteclient and tonlib

This commit is contained in:
tolya-yanot 2022-08-30 03:30:00 +03:00
parent 1c356a190d
commit da65be6ee2
3 changed files with 9 additions and 4 deletions

View file

@ -814,7 +814,7 @@ vmc_pushint$1111 value:int32 next:^VmCont = VmCont;
//
// DNS RECORDS
//
_ (HashmapE 256 DNSRecord) = DNS_RecordSet;
_ (HashmapE 256 ^DNSRecord) = DNS_RecordSet;
chunk_ref$_ {n:#} ref:^(TextChunks (n + 1)) = TextChunkRef (n + 1);
chunk_ref_empty$_ = TextChunkRef 0;

View file

@ -433,8 +433,12 @@ td::Result<std::vector<ManualDns::RawEntry>> ManualDns::resolve_raw_or_throw(td:
} else {
if (category.is_zero()) {
vm::Dictionary dict(std::move(data), 256);
dict.check_for_each([&](auto cs, td::ConstBitPtr key, int n) {
dict.check_for_each([&](td::Ref<vm::CellSlice> cs, td::ConstBitPtr key, int n) {
CHECK(n == 256);
if (cs.is_null() || cs->size_ext() != 0x10000) {
return true;
}
cs = vm::load_cell_slice_ref(cs->prefetch_ref());
vec.push_back({name.str(), td::Bits256(key), cs});
return true;
});

View file

@ -1812,10 +1812,11 @@ void TestNode::dns_resolve_finish(ton::WorkchainId workchain, ton::StdSmcAddress
if (!dict.check_for_each([this, &out](Ref<vm::CellSlice> cs, td::ConstBitPtr key, int n) {
CHECK(n == 256);
td::Bits256 x{key};
/*if (cs.is_null() || cs->size_ext() != 0x10000) {
if (cs.is_null() || cs->size_ext() != 0x10000) {
out << "category " << x << " : value is not a reference" << std::endl;
return true;
}*/
}
cs = vm::load_cell_slice_ref(cs->prefetch_ref());
std::ostringstream os;
(void)show_dns_record(os, x, cs, true);
out << "category " << x << " : " << os.str() << std::endl;