From 40ef38963b34436427139fa6207a43e9939f9017 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Mon, 6 Feb 2012 14:24:30 -0500 Subject: [PATCH] Clear cache every N seconds (until I build a better mechanism) --- proxy.rkt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/proxy.rkt b/proxy.rkt index ba1662f..1682134 100644 --- a/proxy.rkt +++ b/proxy.rkt @@ -142,15 +142,20 @@ (send-message (answer->reply original-question answer)))])))])) (define (question-dispatcher zone0 client-sock) + (define cache-clear-interval (* 60 1000)) (os-big-bang zone0 ;; TODO: consider deduping questions here too? + (send-message (set-timer 'clear-dns-cache cache-clear-interval #t)) (subscribe 'question-handler-factory (message-handlers zone [(? question? q) (transition zone (spawn (question-handler zone q client-sock)))] [(network-reply _ answer) - (incorporate-complete-answer answer zone)])))) + (incorporate-complete-answer answer zone)] + [(timer-expired 'clear-dns-cache _) + (transition zone0 + (send-message (set-timer 'clear-dns-cache cache-clear-interval #t)))])))) (struct question-state (zone q client-sock nameservers-tried retry-count) #:transparent) (struct expanding-cnames (q accumulator remaining-count) #:transparent)