diff options
Diffstat (limited to 'lisp/net/dns.el')
-rw-r--r-- | lisp/net/dns.el | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/lisp/net/dns.el b/lisp/net/dns.el index 2045d4dfca1..1086bab9466 100644 --- a/lisp/net/dns.el +++ b/lisp/net/dns.el @@ -135,8 +135,8 @@ updated. Set this variable to t to disable the check.") (if (stringp ended) (if (null name) ended - (concat (mapconcat 'identity (nreverse name) ".") "." ended)) - (mapconcat 'identity (nreverse name) ".")))) + (concat (mapconcat #'identity (nreverse name) ".") "." ended)) + (mapconcat #'identity (nreverse name) ".")))) (defun dns-write (spec &optional tcp-p) "Write a DNS packet according to SPEC. @@ -283,7 +283,7 @@ If TCP-P, the first two bytes of the packet will be the length field." (let ((bytes nil)) (dotimes (_ 4) (push (dns-read-bytes 1) bytes)) - (mapconcat 'number-to-string (nreverse bytes) "."))) + (mapconcat #'number-to-string (nreverse bytes) "."))) ((eq type 'AAAA) (let (hextets) (dotimes (_ 8) @@ -332,7 +332,7 @@ Parses \"/etc/resolv.conf\" or calls \"nslookup\"." (setq dns-servers (nreverse dns-servers)))) (when (executable-find "nslookup") (with-temp-buffer - (call-process "nslookup" nil t nil "localhost") + (call-process "nslookup" nil t nil "-retry=0" "-timeout=2" "localhost") (goto-char (point-min)) (when (re-search-forward "^Address:[ \t]*\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\|[[:xdigit:]:]*\\)" nil t) @@ -386,7 +386,7 @@ If REVERSE, look up an IP address." (when reverse (setq name (concat - (mapconcat 'identity (nreverse (split-string name "\\.")) ".") + (mapconcat #'identity (nreverse (split-string name "\\.")) ".") ".in-addr.arpa") type 'PTR)) @@ -492,19 +492,22 @@ If REVERSE, look up an IP address." (dns-get-txt-answer (dns-get 'answers result)) (dns-get 'data answer)))))))))) +;;;###autoload (defun dns-query (name &optional type full reverse) "Query a DNS server for NAME of TYPE. If FULL, return the entire record returned. If REVERSE, look up an IP address." - (let ((result nil)) - (dns-query-asynchronous - name - (lambda (response) - (setq result (list response))) - type full reverse) - ;; Loop until we get the callback. - (while (not result) - (sleep-for 0.01)) + (let* ((result nil) + (query-started + (dns-query-asynchronous + name + (lambda (response) + (setq result (list response))) + type full reverse))) + (if query-started + ;; Loop until we get the callback. + (while (not result) + (sleep-for 0.01))) (car result))) (provide 'dns) |