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 resource (struct-copy rr resource0 [ttl 0]))
|
||||||
(define name (rr-name resource))
|
(define name (rr-name resource))
|
||||||
(define old-expirymap (hash-ref db name hash))
|
(define old-expirymap (hash-ref db name hash))
|
||||||
(if (hash-has-key? old-expirymap resource) ;; don't update TTLs if entry exists
|
(define old-expiry (hash-ref old-expirymap resource 0))
|
||||||
db
|
(cond
|
||||||
(hash-set db name (hash-set old-expirymap resource expiry))))
|
[(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)
|
;; Maybe<CompleteAnswer> CompiledZone -> (values CompiledZone Timers)
|
||||||
(define (incorporate-complete-answer ans db)
|
(define (incorporate-complete-answer ans db)
|
||||||
|
|
Loading…
Reference in New Issue