concurrent lookup changes
This commit is contained in:
parent
17a3dac645
commit
efab1a3161
|
@ -41,9 +41,12 @@
|
||||||
; dns-lookup-ip can either be given an ip-string or an ip-address32.
|
; dns-lookup-ip can either be given an ip-string or an ip-address32.
|
||||||
;
|
;
|
||||||
; concurrent dns lookup:
|
; concurrent dns lookup:
|
||||||
; a concurrent lookup to all nameservers in /etc/resolv.conf is started,
|
; if a list of nameservers is given to the optional <nameserver> argument,
|
||||||
; if the variable dns-concurrent-lookup is given as optional <nameserver>
|
; a concurrent lookup to all nameservers in this list is started.
|
||||||
; argument.
|
; The nameservers in this list could either be ip-strings or ip-address32s.
|
||||||
|
; example: (dns-lookup-name "www.uni-tuebingen.de" (dns-find-nameserver-list))
|
||||||
|
; starts an concurrent lookup which contacts all nameservers in
|
||||||
|
; /etc/resolv.conf.
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
; (dns-lookup <name | ip-string | ip-address32> <type> [nameserver])
|
; (dns-lookup <name | ip-string | ip-address32> <type> [nameserver])
|
||||||
|
@ -163,11 +166,7 @@
|
||||||
(else (more))))
|
(else (more))))
|
||||||
|
|
||||||
|
|
||||||
;; concurrent-flag
|
|
||||||
(define dns-concurrent-lookup 'dns-concurrent-lookup)
|
|
||||||
|
|
||||||
;;; -- globals and types
|
;;; -- globals and types
|
||||||
|
|
||||||
;; off
|
;; off
|
||||||
(define *nul* (ascii->char 0))
|
(define *nul* (ascii->char 0))
|
||||||
|
|
||||||
|
@ -997,11 +996,15 @@
|
||||||
|
|
||||||
;; concurrent-lookup
|
;; concurrent-lookup
|
||||||
;; starts a <lookup>-lookup to all nameservers in (dns-find-nameserver-list)
|
;; starts a <lookup>-lookup to all nameservers in (dns-find-nameserver-list)
|
||||||
(define (concurrent-lookup lookup name)
|
(define (concurrent-lookup lookup name nameservers)
|
||||||
(let* ((return 'no-value)
|
(let* ((return 'no-value)
|
||||||
(lock (make-lock))
|
(lock (make-lock))
|
||||||
(queue (make-queue))
|
(queue (make-queue))
|
||||||
(nameserver-list (dns-find-nameserver-list)))
|
(nameserver-list (map (lambda (nameserver)
|
||||||
|
(if (address32? nameserver)
|
||||||
|
(address32->ip-string nameserver)
|
||||||
|
nameserver))
|
||||||
|
nameservers)))
|
||||||
|
|
||||||
(obtain-lock lock)
|
(obtain-lock lock)
|
||||||
|
|
||||||
|
@ -1014,7 +1017,7 @@
|
||||||
(enqueue! queue result)
|
(enqueue! queue result)
|
||||||
;(display "received reply from ")(display nameserver)(display ": ")(display result)(newline)
|
;(display "received reply from ")(display nameserver)(display ": ")(display result)(newline)
|
||||||
(release-lock lock)))))
|
(release-lock lock)))))
|
||||||
(map (lambda (adr32) (address32->ip-string adr32)) (dns-find-nameserver-list)))))
|
nameserver-list)))
|
||||||
|
|
||||||
(obtain-lock lock)
|
(obtain-lock lock)
|
||||||
(let loop ((count (length nameserver-list)))
|
(let loop ((count (length nameserver-list)))
|
||||||
|
@ -1070,8 +1073,8 @@
|
||||||
(lambda (name . args)
|
(lambda (name . args)
|
||||||
(if (null? args)
|
(if (null? args)
|
||||||
(simple-lookup-function name)
|
(simple-lookup-function name)
|
||||||
(if (eq? (car args) dns-concurrent-lookup)
|
(if (list? (car args))
|
||||||
(concurrent-lookup simple-lookup-function name)
|
(concurrent-lookup simple-lookup-function name (car args))
|
||||||
(simple-lookup-function name (car args))))))
|
(simple-lookup-function name (car args))))))
|
||||||
|
|
||||||
;; looks up a hostname, returns an ip.
|
;; looks up a hostname, returns an ip.
|
||||||
|
|
|
@ -189,7 +189,6 @@
|
||||||
dns-lookup-ip ; simple lookup function
|
dns-lookup-ip ; simple lookup function
|
||||||
dns-lookup-nameserver ; simple lookup function
|
dns-lookup-nameserver ; simple lookup function
|
||||||
dns-lookup-mail-exchanger ; simple lookpu function
|
dns-lookup-mail-exchanger ; simple lookpu function
|
||||||
dns-concurrent-lookup ; the concurrent lookup variable
|
|
||||||
show-dns-message ; prints a human readable dns-msg
|
show-dns-message ; prints a human readable dns-msg
|
||||||
force-ip ; reruns a lookup until a ip is resolved
|
force-ip ; reruns a lookup until a ip is resolved
|
||||||
force-ip-list ; reruns a lookup until a list of ips is resolved
|
force-ip-list ; reruns a lookup until a list of ips is resolved
|
||||||
|
|
Loading…
Reference in New Issue