From 231e2979757fa88d540c4972a783848fdf782c1c Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Fri, 17 Feb 2012 16:05:18 -0500 Subject: [PATCH] Handle abnormal response codes properly --- network-query.rkt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/network-query.rkt b/network-query.rkt index f8222e4..9824fae 100644 --- a/network-query.rkt +++ b/network-query.rkt @@ -133,7 +133,11 @@ (f (dns-message-authorities message)) (f (dns-message-additional message)))] [(name-error) #f] - [else 'no-answer])) + [else + (begin (write `(Abnormal response-code ,(dns-message-response-code message) received + in response to questions ,(dns-message-questions message))) + (newline)) + 'no-answer])) ;; IPv4 -> String (define (ip->host-name ip-address) @@ -201,9 +205,11 @@ (unsubscribe rpc-id))])))])) (define (on-answer w ans) - (transition w - (send-message (network-reply (network-request-unique-id (network-query-state-request w)) - ans)))) + (if (eq? ans 'no-answer) ;; can come from filter-dns-reply + (try-next-server w) + (transition w + (send-message (network-reply (network-request-unique-id (network-query-state-request w)) + ans))))) (define (send-request w query-id timeout server-ip) (match-define (network-request s q zone-origin _ _) (network-query-state-request w))