Cope with edge-case where a stale RRSET wasn't being freshened
This commit is contained in:
parent
d33e251dd7
commit
659cb13738
11
zonedb.rkt
11
zonedb.rkt
|
@ -79,9 +79,14 @@
|
|||
(define resource (struct-copy rr resource0 [ttl 0]))
|
||||
(define name (rr-name resource))
|
||||
(define old-expirymap (hash-ref db name hash))
|
||||
(if (hash-has-key? old-expirymap resource) ;; don't update TTLs if entry exists
|
||||
db
|
||||
(hash-set db name (hash-set old-expirymap resource expiry))))
|
||||
(define old-expiry (hash-ref old-expirymap resource 0))
|
||||
(cond
|
||||
[(infinite-lifetime? old-expiry) ;; don't update TTL: the existing record should live forever
|
||||
db]
|
||||
[(or (infinite-lifetime? expiry) (> expiry old-expiry)) ;; update TTL
|
||||
(hash-set db name (hash-set old-expirymap resource expiry))]
|
||||
[else ;; old record finite-lifetime but expiring after the new expiry: leave it alone
|
||||
db]))
|
||||
|
||||
;; Maybe<CompleteAnswer> CompiledZone -> (values CompiledZone Timers)
|
||||
(define (incorporate-complete-answer ans db)
|
||||
|
|
Loading…
Reference in New Issue