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

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


--- sys/src/cmd/ndb/dn.c
+++ sys/src/cmd/ndb/dn.c
@@ -621,7 +621,7 @@
 
 /*
  *  mark all local db records about my area as authoritative,
- *  time out any others
+ *  delete those no longer in the database
  */
 void
 dnauthdb(void)
@@ -630,7 +630,7 @@
 	ulong minttl;
 	Area *area;
 	DN *dp;
-	RR *rp;
+	RR *rp, **l;
 
 	lock(&dnlock);
 
@@ -638,19 +638,23 @@
 	for(i = 0; i < HTLEN; i++)
 		for(dp = ht[i]; dp; dp = dp->next){
 			area = inmyarea(dp->name);
-			for(rp = dp->rr; rp; rp = rp->next)
+			l = &dp->rr;
+			for(rp = *l; rp; rp = *l){
 				if(rp->db){
+					/* timed out by dnagedb, not reread */
+					if(rp->expire == 0){
+						rrdelhead(l);
+						continue;
+					}
 					if(area){
 						minttl = area->soarr->soa->minttl;
 						if(rp->ttl < minttl)
 							rp->ttl = minttl;
 						rp->auth = 1;
-					}
-					if(rp->expire == 0){
-						rp->db = 0;
-						dp->referenced = now-Reserved-1;
 					}
 				}
+				l = &rp->next;
+			}
 		}
 
 	unlock(&dnlock);

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.