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; }