Plan 9 from Bell Labs’s /usr/web/sources/contrib/mospak/ndb-dns-empty-noerror/ndb-dns-empty-noerror.diff

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


--- /sys/src/cmd/ndb/dnserver.c
+++ /sys/src/cmd/ndb/dnserver.c
@@ -45,11 +45,23 @@
 		repp->flags = (rcode&Rmask) | Fresp | Fcanrec | Oquery;
 		return;
 	}
 	if(!rrsupported(repp->qd->type)){
-		dnslog("server: unsupported request %s from %I",
+		/* RFC 8659 §6.2 / RFC 3597 §3: NOERROR-empty for unknown RR types,
+		 * not NOTIMP (which RFC 1035 §4.1.1 reserves for OPCODE).  RFC 2308
+		 * §3 SOA in authority when authoritative.
+		 */
+		dnslog("server: unknown type %s from %I (returning NOERROR)",
 			rrname(repp->qd->type, tname, sizeof tname), srcip);
-		repp->flags = Runimplimented | Fresp | Fcanrec | Oquery;
+		myarea = inmyarea(repp->qd->owner->name);
+		if(myarea != nil){
+			repp->flags = Rok | Fauth | Fresp | recursionflag | Oquery;
+			lock(&dnlock);
+			rrcopy(myarea->soarr, &tp);
+			rrcat(&repp->ns, tp);
+			unlock(&dnlock);
+		} else
+			repp->flags = Rok | Fresp | recursionflag | Oquery;
 		return;
 	}

 	if(repp->qd->owner->class != Cin){

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.