From: Miod Vallat Date: Mon, 15 Dec 2025 09:51:26 +0000 (+0100) Subject: Give the list flavour of deserializeFromBuffer() a different name. X-Git-Tag: rec-5.4.0-beta1~86^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9cf04c8f308c4187348c16597fcd6d081f1b96f6;p=thirdparty%2Fpdns.git Give the list flavour of deserializeFromBuffer() a different name. Signed-off-by: Miod Vallat --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index 3c36327bb8..a4141eb13e 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -1096,6 +1096,9 @@ void serializeToBuffer(std::string& buffer, const vector -void deserializeFromBuffer(const string_view& buffer, LMDBBackend::LMDBResourceRecord& value) +// Deserialize a single resource record. +static void deserializeFromBuffer(const string_view& buffer, LMDBBackend::LMDBResourceRecord& value) { if (buffer.size() >= serialize_minimum_size) { deserializeRRFromBuffer(buffer, value); } } -template <> -void deserializeFromBuffer(const string_view& buffer, vector& value) +// Deserialize a list of resource records. +// Stops as soon as all resource records in the buffer have been processed, or +// a non-deserializable (truncated) record is found. +// May return an empty vector. +static void deserializeMultipleFromBuffer(const string_view& buffer, vector& value) { auto str_copy = buffer; while (str_copy.size() >= serialize_minimum_size) { @@ -2031,7 +2037,7 @@ bool LMDBBackend::getInternal(DNSName& basename, std::string_view& key) continue; } - deserializeFromBuffer(d_lookupstate.val.get(), d_lookupstate.rrset); + deserializeMultipleFromBuffer(d_lookupstate.val.get(), d_lookupstate.rrset); d_lookupstate.rrsettime = static_cast(LMDBLS::LSgetTimestamp(d_lookupstate.val.getNoStripHeader()) / (1000UL * 1000UL * 1000UL)); d_lookupstate.rrsetpos = 0; } @@ -2968,7 +2974,7 @@ bool LMDBBackend::updateDNSSECOrderNameAndAuth(domainid_t domain_id, const DNSNa } vector lrrs; - deserializeFromBuffer(val.get(), lrrs); + deserializeMultipleFromBuffer(val.get(), lrrs); bool changed = false; vector newRRs; newRRs.reserve(lrrs.size());