From: Miod Vallat Date: Mon, 13 Oct 2025 11:52:48 +0000 (+0200) Subject: In zone copy, proceed anyway if --force even if target doesn't support comments. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F16209%2Fhead;p=thirdparty%2Fpdns.git In zone copy, proceed anyway if --force even if target doesn't support comments. Signed-off-by: Miod Vallat --- 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++; } }