]> granicus.if.org Git - pdns/commitdiff
trailing dots in bind slave zones
authorKees Monshouwer <mind04@monshouwer.org>
Sat, 2 Jan 2016 18:43:18 +0000 (19:43 +0100)
committermind04 <mind04@monshouwer.org>
Sat, 2 Jan 2016 18:43:18 +0000 (19:43 +0100)
modules/bindbackend/bindbackend2.cc

index 18c9d3c0735a076ed4e738b28d7858e93c7f1040..2ff20b8951fdbba20cb4eebe5b61a2b6aec01d3c 100644 (file)
@@ -257,13 +257,14 @@ bool Bind2Backend::feedRecord(const DNSResourceRecord &rr, string *ordername)
   BB2DomainInfo bbd;
   safeGetBBDomainInfo(d_transaction_id, &bbd);
 
-  string name=bbd.d_name.toStringNoDot();
-  string qname=rr.qname.toStringNoDot();
+  string name=bbd.d_name.toString();
+  string qname=rr.qname.toString();
 
   if(!stripDomainSuffix(&qname, name))
     throw DBException("out-of-zone data '"+qname+".' during AXFR of zone '"+name+".'");
 
-  string content=rr.content;
+  shared_ptr<DNSRecordContent> drc(DNSRecordContent::mastermake(rr.qtype.getCode(), 1, rr.content));
+  string content = drc->getZoneRepresentation();
 
   // SOA needs stripping too! XXX FIXME - also, this should not be here I think
   switch(rr.qtype.getCode()) {
@@ -272,8 +273,7 @@ bool Bind2Backend::feedRecord(const DNSResourceRecord &rr, string *ordername)
   case QType::CNAME:
   case QType::DNAME:
   case QType::NS:
-    if(!stripDomainSuffix(&content, name))
-      content=stripDot(content)+".";
+    stripDomainSuffix(&content, name);
     // falltrough
   default:
     *d_of<<qname<<"\t"<<rr.ttl<<"\t"<<rr.qtype.getName()<<"\t"<<content<<endl;