From d1721c761e3dce78ceb27aaaba2ad7836e669306 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 26 Jan 2020 16:24:57 +0100 Subject: [PATCH] LookupServer: Don't cache already-expired DNS answers --- Servers/LookupServer/LookupServer.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Servers/LookupServer/LookupServer.cpp b/Servers/LookupServer/LookupServer.cpp index cb36c1cc5f..a33bb4fce8 100644 --- a/Servers/LookupServer/LookupServer.cpp +++ b/Servers/LookupServer/LookupServer.cpp @@ -240,13 +240,18 @@ Vector LookupServer::lookup(const String& hostname, bool& did_timeout, u return {}; } - Vector responses; + Vector responses; + Vector cacheable_answers; for (auto& answer : response.answers()) { responses.append(answer.record_data()); + if (!answer.has_expired()) + cacheable_answers.append(answer); } - if (m_lookup_cache.size() >= 256) - m_lookup_cache.remove(m_lookup_cache.begin()); - m_lookup_cache.set(hostname, { request.questions()[0], response.answers() }); + if (!cacheable_answers.is_empty()) { + if (m_lookup_cache.size() >= 256) + m_lookup_cache.remove(m_lookup_cache.begin()); + m_lookup_cache.set(hostname, { request.questions()[0], move(cacheable_answers) }); + } return responses; }