diff --git a/scheme/lib/dns.scm b/scheme/lib/dns.scm index f006e06..9a918ce 100644 --- a/scheme/lib/dns.scm +++ b/scheme/lib/dns.scm @@ -132,6 +132,7 @@ ;; called by the error-handlers, prints out error descriptions (define (dns-error-messages condition more) + (display "dns-error: ") (cond ((invalid-type? condition) (display "make-octet-question: invalid DNS query type\n")) @@ -1015,12 +1016,13 @@ (release-lock lock))))) (map (lambda (adr32) (address32->ip-string adr32)) (dns-find-nameserver-list))))) + (obtain-lock lock) (let loop ((count (length nameserver-list))) - (obtain-lock lock) - (let ((result (dequeue! queue))) - (if (or result (= 1 (length nameserver-list))) - result - (loop (- count 1))))))) + (if (not (queue-empty? queue)) + (let ((result (dequeue! queue))) + (if (or result (= 1 (length nameserver-list))) + result + (loop (- count 1)))))))) ;; checks the arguments of the simple lookup functions. ;; if a nameserver-name is given and not a nameserver-ip