]> granicus.if.org Git - pdns/commitdiff
memory hole you can drive a truck through..
authorBert Hubert <bert.hubert@netherlabs.nl>
Tue, 1 Nov 2005 10:35:37 +0000 (10:35 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Tue, 1 Nov 2005 10:35:37 +0000 (10:35 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@534 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/recursor_cache.cc

index c04ae446a16353d21e47c13e6c26247da03df769..1654262af7a4a83e52c05d35ce264800ba46cec2 100644 (file)
@@ -61,7 +61,12 @@ int MemRecursorCache::get(time_t now, const string &qname, const QType& qt, set<
 void MemRecursorCache::replace(const string &qname, const QType& qt,  const set<DNSResourceRecord>& content)
 {
   set<StoredRecord>& stored=d_cache[toLowerCanonic(qname)+"|"+qt.getName()];
+
+  for(set<StoredRecord>::iterator k=stored.begin();k!=stored.end();++k) 
+    k->d_string.prune();
+
   stored.clear();
+
   for(set<DNSResourceRecord>::const_iterator i=content.begin(); i != content.end(); ++i) {
     StoredRecord dr;
     dr.d_ttd=i->ttl;
@@ -88,7 +93,6 @@ void MemRecursorCache::doPrune(void)
     if(j->second.empty()) { // everything is gone
       d_cache.erase(j++);
       names++;
-      
     }
     else {
       ++j;