bool DNSSECKeeper::getFromMeta(const DNSName& zname, const std::string& key, std::string& value)
{
+ if (d_metaUpdate) {
+ if (d_keymetadb->inTransaction()) {
+ throw runtime_error("DNSSECKeeper::getFromMeta() called after an update from within a transactiona.");
+ }
+ d_metaUpdate=false;
+ }
+
static int ttl = ::arg().asNum("domain-metadata-cache-ttl");
if(!((++s_ops) % 100000)) {
bool DNSSECKeeper::setNSEC3PARAM(const DNSName& zname, const NSEC3PARAMRecordContent& ns3p, const bool& narrow)
{
+ if (d_keymetadb->inTransaction()) {
+ d_metaUpdate = true;
+ }
+
string error_msg = "";
if (!checkNSEC3PARAM(ns3p, error_msg))
throw runtime_error("NSEC3PARAMs provided for zone '"+zname.toLogString()+"' are invalid: " + error_msg);
bool DNSSECKeeper::unsetNSEC3PARAM(const DNSName& zname)
{
+ if (d_keymetadb->inTransaction()) {
+ d_metaUpdate = true;
+ }
+
return (d_keymetadb->setDomainMetadata(zname, "NSEC3PARAM", vector<string>()) && d_keymetadb->setDomainMetadata(zname, "NSEC3NARROW", vector<string>())) && clearMetaCache(zname);
}
bool DNSSECKeeper::setPresigned(const DNSName& zname)
{
+ if (d_keymetadb->inTransaction()) {
+ d_metaUpdate = true;
+ }
+
vector<string> meta;
meta.push_back("1");
return d_keymetadb->setDomainMetadata(zname, "PRESIGNED", meta) && clearMetaCache(zname);
bool DNSSECKeeper::unsetPresigned(const DNSName& zname)
{
+ if (d_keymetadb->inTransaction()) {
+ d_metaUpdate = true;
+ }
+
return d_keymetadb->setDomainMetadata(zname, "PRESIGNED", vector<string>()) && clearMetaCache(zname);
}
*/
bool DNSSECKeeper::setPublishCDS(const DNSName& zname, const string& digestAlgos)
{
+ if (d_keymetadb->inTransaction()) {
+ d_metaUpdate = true;
+ }
+
vector<string> meta;
meta.push_back(digestAlgos);
return d_keymetadb->setDomainMetadata(zname, "PUBLISH-CDS", meta) && clearMetaCache(zname);
*/
bool DNSSECKeeper::unsetPublishCDS(const DNSName& zname)
{
+ if (d_keymetadb->inTransaction()) {
+ d_metaUpdate = true;
+ }
+
return d_keymetadb->setDomainMetadata(zname, "PUBLISH-CDS", vector<string>()) && clearMetaCache(zname);
}
*/
bool DNSSECKeeper::setPublishCDNSKEY(const DNSName& zname, bool deleteAlg)
{
+ if (d_keymetadb->inTransaction()) {
+ d_metaUpdate = true;
+ }
+
vector<string> meta;
meta.push_back(deleteAlg ? "0" : "1");
return d_keymetadb->setDomainMetadata(zname, "PUBLISH-CDNSKEY", meta) && clearMetaCache(zname);
*/
bool DNSSECKeeper::unsetPublishCDNSKEY(const DNSName& zname)
{
+ if (d_keymetadb->inTransaction()) {
+ d_metaUpdate = true;
+ }
+
return d_keymetadb->setDomainMetadata(zname, "PUBLISH-CDNSKEY", vector<string>()) && clearMetaCache(zname);
}