mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 12:35:14 +00:00
LibDNS: Don't purge lookup entries that are not yet fully resolved
This commit is contained in:
parent
124a4f12e4
commit
9648c83b7d
Notes:
github-actions[bot]
2024-11-30 22:19:05 +00:00
Author: https://github.com/alimpfard Commit: https://github.com/LadybirdBrowser/ladybird/commit/9648c83b7d2 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2661
1 changed files with 9 additions and 2 deletions
|
@ -61,7 +61,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
if (m_cached_records.is_empty())
|
||||
if (m_cached_records.is_empty() && m_request_done)
|
||||
m_valid = false;
|
||||
}
|
||||
|
||||
|
@ -93,15 +93,17 @@ public:
|
|||
}
|
||||
|
||||
void will_add_record_of_type(Messages::ResourceType type) { m_desired_types.set(type); }
|
||||
void finished_request() { m_request_done = true; }
|
||||
|
||||
void set_id(u16 id) { m_id = id; }
|
||||
u16 id() { return m_id; }
|
||||
|
||||
bool is_valid() const { return m_valid; }
|
||||
bool is_valid() const { return m_valid && m_request_done; }
|
||||
Messages::DomainName const& name() const { return m_name; }
|
||||
|
||||
private:
|
||||
bool m_valid { false };
|
||||
bool m_request_done { false };
|
||||
Messages::DomainName m_name;
|
||||
struct RecordWithExpiration {
|
||||
Messages::ResourceRecord record;
|
||||
|
@ -147,6 +149,7 @@ public:
|
|||
|
||||
ptr->add_record({ .name = {}, .type = Messages::ResourceType::A, .class_ = Messages::Class::IN, .ttl = 0, .record = Messages::Records::A { v4 }, .raw = {} });
|
||||
ptr->add_record({ .name = {}, .type = Messages::ResourceType::AAAA, .class_ = Messages::Class::IN, .ttl = 0, .record = Messages::Records::AAAA { v6 }, .raw = {} });
|
||||
ptr->finished_request();
|
||||
};
|
||||
|
||||
add_v4v6_entry("localhost"sv, { 127, 0, 0, 1 }, IPv6Address::loopback());
|
||||
|
@ -230,6 +233,7 @@ public:
|
|||
if (desired_types.contains_slow(Messages::ResourceType::A)) {
|
||||
auto result = make_ref_counted<LookupResult>(Messages::DomainName {});
|
||||
result->add_record({ .name = {}, .type = Messages::ResourceType::A, .class_ = Messages::Class::IN, .ttl = 0, .record = Messages::Records::A { maybe_ipv4.release_value() }, .raw = {} });
|
||||
result->finished_request();
|
||||
promise->resolve(move(result));
|
||||
return promise;
|
||||
}
|
||||
|
@ -239,6 +243,7 @@ public:
|
|||
if (desired_types.contains_slow(Messages::ResourceType::AAAA)) {
|
||||
auto result = make_ref_counted<LookupResult>(Messages::DomainName {});
|
||||
result->add_record({ .name = {}, .type = Messages::ResourceType::AAAA, .class_ = Messages::Class::IN, .ttl = 0, .record = Messages::Records::AAAA { maybe_ipv6.release_value() }, .raw = {} });
|
||||
result->finished_request();
|
||||
promise->resolve(move(result));
|
||||
return promise;
|
||||
}
|
||||
|
@ -269,6 +274,7 @@ public:
|
|||
[&](IPv6Address const& address) {
|
||||
result->add_record({ .name = {}, .type = Messages::ResourceType::AAAA, .class_ = Messages::Class::IN, .ttl = 0, .record = Messages::Records::AAAA { address }, .raw = {} });
|
||||
});
|
||||
result->finished_request();
|
||||
promise->resolve(result);
|
||||
return promise;
|
||||
}
|
||||
|
@ -455,6 +461,7 @@ private:
|
|||
for (auto& record : message.answers)
|
||||
result->add_record(move(record));
|
||||
|
||||
result->finished_request();
|
||||
lookup->promise->resolve(*result);
|
||||
lookups->remove(message.header.id);
|
||||
return {};
|
||||
|
|
Loading…
Add table
Reference in a new issue