git: 9front

Download patch

ref: 90da74513cd68b04bb4b1d79d7521c4971c6882f
parent: ad6bf052a4e385711ef4aad460736680aabba768
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue Oct 9 02:34:27 EDT 2018

ndb/dnstcp: return a proper non-answer when rejecting zone transfer

--- a/sys/src/cmd/ndb/dnstcp.c
+++ b/sys/src/cmd/ndb/dnstcp.c
@@ -299,15 +299,15 @@
 
 	/* send the soa */
 	repp->an = rrlookup(dp, Tsoa, NOneg);
-	reply(1, repp, req);
-	if(repp->an == nil)
-		goto out;
-	if(!anyone && !myip(srcip) && findserver(srcip, repp->an->soa->slaves, req) == nil){
+	if(repp->an != nil && !anyone && !myip(srcip)
+	&& findserver(srcip, repp->an->soa->slaves, req) == nil){
 		dnslog("dnstcp: %I axfr %s - not a dnsslave", srcip, dp->name);
 		rrfreelist(repp->an);
 		repp->an = nil;
-		goto out;
 	}
+	reply(1, repp, req);
+	if(repp->an == nil)
+		goto out;
 	rrfreelist(repp->an);
 	repp->an = nil;
 
--