From: Miod Vallat Date: Fri, 18 Jul 2025 08:27:25 +0000 (+0200) Subject: Provide rrset timestamps in LMDB. X-Git-Tag: rec-5.4.0-alpha0~9^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=75531c0b7e0d7a317a7c01951e64c67d14697943;p=thirdparty%2Fpdns.git Provide rrset timestamps in LMDB. Signed-off-by: Miod Vallat --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index bc7ba9da2..b3f016361 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -1751,6 +1751,8 @@ bool LMDBBackend::deleteDomain(const ZoneName& domain) * cursor, i.e. same qname but possibly different qtype) * d_currentrrsetpos: position in the above when returning its elements one * by one + * d_currentrrsettime: timestamp of d_currentrrset (can't be stored in + * DNSZoneRecord) * d_currentKey: database key at cursor * d_currentVal: database contents at cursor * d_includedisabled: whether to include disabled records in the results @@ -1900,6 +1902,7 @@ bool LMDBBackend::get(DNSZoneRecord& zr) } deserializeFromBuffer(d_currentVal.get(), d_currentrrset); + d_currentrrsettime = LMDBLS::LSgetTimestamp(d_currentVal.getNoStripHeader()) / (1000UL * 1000UL * 1000UL); d_currentrrsetpos = 0; } else { @@ -1963,6 +1966,7 @@ bool LMDBBackend::get(DNSResourceRecord& rr) rr.domain_id = zr.domain_id; rr.auth = zr.auth; rr.disabled = zr.disabled; + rr.last_modified = d_currentrrsettime; return true; } diff --git a/modules/lmdbbackend/lmdbbackend.hh b/modules/lmdbbackend/lmdbbackend.hh index 1071a5073..e7db2b43d 100644 --- a/modules/lmdbbackend/lmdbbackend.hh +++ b/modules/lmdbbackend/lmdbbackend.hh @@ -355,6 +355,7 @@ private: DNSName d_lookupsubmatch; vector d_currentrrset; size_t d_currentrrsetpos; + time_t d_currentrrsettime; MDBOutVal d_currentKey; MDBOutVal d_currentVal; bool d_includedisabled;