From 516d38c2037c39fcc1833f49c8aa4e2fe263e12a Mon Sep 17 00:00:00 2001 From: Miod Vallat Date: Mon, 13 Oct 2025 13:52:48 +0200 Subject: [PATCH] In zone copy, proceed anyway if --force even if target doesn't support comments. Signed-off-by: Miod Vallat --- pdns/pdnsutil.cc | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/pdns/pdnsutil.cc b/pdns/pdnsutil.cc index 890e60cd35..d9cc2251c6 100644 --- a/pdns/pdnsutil.cc +++ b/pdns/pdnsutil.cc @@ -1889,27 +1889,33 @@ static void copyZoneContents(const DomainInfo& srcinfo, const ZoneName& dstzone, // Copy comments, if any if (src->listComments(srcinfo.id)) { bool firstComment{true}; + bool copyComments{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"); + if (g_force) { + copyComments = false; + } + else { + tgt->abortTransaction(); + throw PDNSException("Target backend does not support comments - remove them first or use --force"); + } } } - comm.domain_id = dstinfo.id; - if (rewriteNames) { - comm.qname.makeUsRelative(srcinfo.zone); - comm.qname += dstzone.operator const DNSName&(); - } - if (!tgt->feedComment(comm)) { - tgt->abortTransaction(); - throw PDNSException("Failed to feed zone comments"); + if (copyComments) { + comm.domain_id = dstinfo.id; + if (rewriteNames) { + comm.qname.makeUsRelative(srcinfo.zone); + comm.qname += dstzone.operator const DNSName&(); + } + if (!tgt->feedComment(comm)) { + tgt->abortTransaction(); + throw PDNSException("Failed to feed zone comments"); + } + num_comments++; } - num_comments++; } } -- 2.47.3