return d_keymetadb->activateDomainKey(zname, id);
}
+void DNSSECKeeper::getFromMetaOrDefault(const DNSName& zname, const std::string& key, std::string& value, const std::string& defaultvalue)
+{
+ if (getFromMeta(zname, key, value))
+ return;
+ else
+ value = defaultvalue;
+}
-void DNSSECKeeper::getFromMeta(const DNSName& zname, const std::string& key, std::string& value)
+bool DNSSECKeeper::getFromMeta(const DNSName& zname, const std::string& key, std::string& value)
{
static int ttl = ::arg().asNum("domain-metadata-cache-ttl");
+ bool isset = false;
value.clear();
unsigned int now = time(0);
metacache_t::const_iterator iter = s_metacache.find(tie(zname, key));
if(iter != s_metacache.end() && iter->d_ttd > now) {
value = iter->d_value;
- return;
+ return iter->d_isset;
}
}
vector<string> meta;
d_keymetadb->getDomainMetadata(zname, key, meta);
- if(!meta.empty())
+ if(!meta.empty()) {
value=*meta.begin();
+ isset = true;
+ }
if (ttl > 0) {
METACacheEntry nce;
nce.d_ttd = now + ttl;
nce.d_key= key;
nce.d_value = value;
+ nce.d_isset = isset;
{
WriteLock l(&s_metacachelock);
lruReplacingInsert<SequencedTag>(s_metacache, nce);
}
}
+ return isset;
}
void DNSSECKeeper::getSoaEdit(const DNSName& zname, std::string& value)
(*d_keymetadb->backends.begin())->commitTransaction();
}
- void getFromMeta(const DNSName& zname, const std::string& key, std::string& value);
+ void getFromMetaOrDefault(const DNSName& zname, const std::string& key, std::string& value, const std::string& defaultvalue);
+ bool getFromMeta(const DNSName& zname, const std::string& key, std::string& value);
void getSoaEdit(const DNSName& zname, std::string& value);
bool unSecureZone(const DNSName& zone, std::string& error, std::string& info);
bool rectifyZone(const DNSName& zone, std::string& error, std::string& info, bool doTransaction);
DNSName d_domain;
mutable std::string d_key, d_value;
+ mutable bool d_isset;
unsigned int d_ttd;
};