From: Miod Vallat Date: Fri, 3 Oct 2025 05:25:22 +0000 (+0200) Subject: When copying/migrating zones, only complain about comments if there are any. X-Git-Tag: auth-5.0.1~5^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f674451ad7b7e26033e41619ad89549f17c97d33;p=thirdparty%2Fpdns.git When copying/migrating zones, only complain about comments if there are any. Fixes: #16201 Signed-off-by: Miod Vallat (cherry picked from commit dd6e79a5bf56bd80452295ac1f4a8ccbaafdd126) --- diff --git a/pdns/pdnsutil.cc b/pdns/pdnsutil.cc index 1f4517c9c7..4482b4effa 100644 --- a/pdns/pdnsutil.cc +++ b/pdns/pdnsutil.cc @@ -5052,16 +5052,24 @@ static int B2BMigrate(vector& cmds, const std::string_view synopsis) nr++; } - // move comments + // move comments, if any nc=0; if (src->listComments(di.id)) { - if ((tgt->getCapabilities() & DNSBackend::CAP_COMMENTS) == 0) { - throw PDNSException("Target backend does not support comments - remove them first"); - } - Comment c; // NOLINT(readability-identifier-length) - while(src->getComment(c)) { - c.domain_id = di_new.id; - if (!tgt->feedComment(c)) { + bool firstComment{true}; + Comment comm; + while (src->getComment(comm)) { + if (firstComment) { + firstComment = false; + if ((tgt->getCapabilities() & DNSBackend::CAP_COMMENTS) == 0) { + // TODO: consider simply warning about comments not being copied, and + // skip them, rather than abort everything? + tgt->abortTransaction(); + throw PDNSException("Target backend does not support comments - remove them first"); + } + } + comm.domain_id = di_new.id; + if (!tgt->feedComment(comm)) { + tgt->abortTransaction(); throw PDNSException("Failed to feed zone comments"); } nc++;