diff --git a/net/utils.cpp b/net/utils.cpp index 6e1139a3..d7b040c2 100644 --- a/net/utils.cpp +++ b/net/utils.cpp @@ -313,8 +313,10 @@ class DefaultResolver : public Resolver { void discard_cache(std::string_view host, IPAddr ip) override { auto ipaddr = dnscache_.borrow(host); - if (ip.undefined() || ipaddr->empty()) ipaddr.recycle(true); - else { + if (ip.undefined() || ipaddr->empty()) { + ipaddr->delete_all(); + ipaddr.recycle(true); + } else { for (auto itr = ipaddr->rbegin(); itr != ipaddr->rend(); itr++) { if ((*itr)->addr == ip) { ipaddr->erase(*itr);