From edb21e02ea8ed69aee8f07f4d3129c2a9ca1d9ef Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Sun, 9 May 2021 16:47:51 +0200 Subject: [PATCH] LookupServer: Track the receive timestamp for DNS answers --- Userland/Services/LookupServer/DNSAnswer.cpp | 7 ++----- Userland/Services/LookupServer/DNSAnswer.h | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/Userland/Services/LookupServer/DNSAnswer.cpp b/Userland/Services/LookupServer/DNSAnswer.cpp index ed1c3bb126..b4c9e8fc9a 100644 --- a/Userland/Services/LookupServer/DNSAnswer.cpp +++ b/Userland/Services/LookupServer/DNSAnswer.cpp @@ -18,15 +18,12 @@ DNSAnswer::DNSAnswer(const DNSName& name, DNSRecordType type, DNSRecordClass cla , m_record_data(record_data) , m_mdns_cache_flush(mdns_cache_flush) { - auto now = time(nullptr); - m_expiration_time = now + m_ttl; - if (m_expiration_time < now) - m_expiration_time = 0; + time(&m_received_time); } bool DNSAnswer::has_expired() const { - return time(nullptr) >= m_expiration_time; + return time(nullptr) >= m_received_time + m_ttl; } } diff --git a/Userland/Services/LookupServer/DNSAnswer.h b/Userland/Services/LookupServer/DNSAnswer.h index 981f589ba7..8b8560efdd 100644 --- a/Userland/Services/LookupServer/DNSAnswer.h +++ b/Userland/Services/LookupServer/DNSAnswer.h @@ -40,6 +40,7 @@ public: DNSRecordClass class_code() const { return m_class_code; } u16 raw_class_code() const { return (u16)m_class_code | (m_mdns_cache_flush ? MDNS_CACHE_FLUSH : 0); } u32 ttl() const { return m_ttl; } + time_t received_time() const { return m_received_time; } const String& record_data() const { return m_record_data; } bool mdns_cache_flush() const { return m_mdns_cache_flush; } @@ -50,7 +51,7 @@ private: DNSRecordType m_type { 0 }; DNSRecordClass m_class_code { 0 }; u32 m_ttl { 0 }; - time_t m_expiration_time { 0 }; + time_t m_received_time { 0 }; String m_record_data; bool m_mdns_cache_flush { false }; };