{
Lock l(&s_keycachelock);
keycache_t::const_iterator iter = s_keycache.find(zone);
- if(iter != s_keycache.end() && iter->d_ttd > time(0)) {
+ if(iter != s_keycache.end() && iter->d_ttd > (unsigned int)time(0)) {
if(iter->d_keys.empty())
return false;
else
addKey(name, dpk, active);
}
+void DNSSECKeeper::clearCaches(const std::string& name)
+{
+ Lock l(&s_keycachelock);
+ s_keycache.erase(name);
+ s_nseccache.erase(name);
+}
+
+
void DNSSECKeeper::addKey(const std::string& name, const DNSSECPrivateKey& dpk, bool active)
{
+ clearCaches(name);
DNSBackend::KeyData kd;
kd.flags = dpk.d_flags; // the dpk doesn't get stored, only they key part
kd.active = active;
void DNSSECKeeper::removeKey(const std::string& zname, unsigned int id)
{
+ clearCaches(zname);
d_db.removeDomainKey(zname, id);
}
void DNSSECKeeper::deactivateKey(const std::string& zname, unsigned int id)
{
+ clearCaches(zname);
d_db.deactivateDomainKey(zname, id);
}
void DNSSECKeeper::activateKey(const std::string& zname, unsigned int id)
{
+ clearCaches(zname);
d_db.activateDomainKey(zname, id);
}
bool DNSSECKeeper::getNSEC3PARAM(const std::string& zname, NSEC3PARAMRecordContent* ns3p, bool* narrow)
{
- time_t now = time(0);
+ unsigned int now = time(0);
{
Lock l(&s_nseccachelock);
void DNSSECKeeper::setNSEC3PARAM(const std::string& zname, const NSEC3PARAMRecordContent& ns3p, const bool& narrow)
{
+ clearCaches(zname);
string descr = ns3p.getZoneRepresentation();
vector<string> meta;
meta.push_back(descr);
void DNSSECKeeper::unsetNSEC3PARAM(const std::string& zname)
{
+ clearCaches(zname);
d_db.setDomainMetadata(zname, "NSEC3PARAM", vector<string>());
}
DNSSECKeeper::keyset_t DNSSECKeeper::getKeys(const std::string& zone, boost::tribool allOrKeyOrZone)
{
- time_t now = time(0);
+ unsigned int now = time(0);
{
Lock l(&s_keycachelock);
keycache_t::const_iterator iter = s_keycache.find(zone);
void DNSSECKeeper::secureZone(const std::string& name, int algorithm)
{
+ clearCaches(name); // just to be sure ;)
addKey(name, true, algorithm);
}
bool getNSEC3PARAM(const std::string& zname, NSEC3PARAMRecordContent* n3p=0, bool* narrow=0);
void setNSEC3PARAM(const std::string& zname, const NSEC3PARAMRecordContent& n3p, const bool& narrow=false);
void unsetNSEC3PARAM(const std::string& zname);
-
+ void clearCaches(const std::string& name);
+private:
struct KeyCacheEntry
{
typedef vector<DNSSECKeeper::keymeta_t> keys_t;