Synch to Gnus 200310080914.
authoryamaoka <yamaoka>
Wed, 8 Oct 2003 15:08:41 +0000 (15:08 +0000)
committeryamaoka <yamaoka>
Wed, 8 Oct 2003 15:08:41 +0000 (15:08 +0000)
lisp/ChangeLog
lisp/dns.el

index 12dd70d..6ebdc20 100644 (file)
@@ -1,3 +1,7 @@
+2003-10-08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * dns.el (query-dns): Don't error out on malformed resolv files.
+
 2003-10-06  Jesper Harder  <harder@ifa.au.dk>
 
        * gnus.el (gnus-group-faq-directory): Update .tw entry.  From
index 44a002a..5e767d8 100644 (file)
@@ -313,45 +313,46 @@ If TCP-P, the first two bytes of the package with be the length field."
 If FULLP, return the entire record returned."
   (setq type (or type 'A))
   (unless dns-servers
-    (dns-parse-resolv-conf)
-    (unless dns-servers
-      (error "No DNS server configuration found")))
-  (mm-with-unibyte-buffer
-    (let ((process (condition-case ()
-                      (dns-make-network-process (car dns-servers))
-                    (error
-                     (message "dns: Got an error while trying to talk to %s"
-                              (car dns-servers))
-                     nil)))
-         (tcp-p (and (not (fboundp 'make-network-process))
-                     (not (featurep 'xemacs))))
-         (step 100)
-         (times (* dns-timeout 1000))
-         (id (random 65000)))
-      (when process
-       (process-send-string
-        process
-        (dns-write `((id ,id)
-                     (opcode query)
-                     (queries ((,name (type ,type))))
-                     (recursion-desired-p t))
-                   tcp-p))
-       (while (and (zerop (buffer-size))
-                   (> times 0))
-         (accept-process-output process 0 step)
-         (decf times step))
-       (ignore-errors
-         (delete-process process))
-       (when tcp-p
-         (goto-char (point-min))
-         (delete-region (point) (+ (point) 2)))
-       (unless (zerop (buffer-size))
-         (let ((result (dns-read (buffer-string))))
-           (if fullp
-               result
-             (let ((answer (car (dns-get 'answers result))))
-               (when (eq type (dns-get 'type answer))
-                 (dns-get 'data answer))))))))))
+    (dns-parse-resolv-conf))
+
+  (if (not dns-servers)
+      (message "No DNS server configuration found")
+    (mm-with-unibyte-buffer
+      (let ((process (condition-case ()
+                        (dns-make-network-process (car dns-servers))
+                      (error
+                       (message "dns: Got an error while trying to talk to %s"
+                                (car dns-servers))
+                       nil)))
+           (tcp-p (and (not (fboundp 'make-network-process))
+                       (not (featurep 'xemacs))))
+           (step 100)
+           (times (* dns-timeout 1000))
+           (id (random 65000)))
+       (when process
+         (process-send-string
+          process
+          (dns-write `((id ,id)
+                       (opcode query)
+                       (queries ((,name (type ,type))))
+                       (recursion-desired-p t))
+                     tcp-p))
+         (while (and (zerop (buffer-size))
+                     (> times 0))
+           (accept-process-output process 0 step)
+           (decf times step))
+         (ignore-errors
+           (delete-process process))
+         (when tcp-p
+           (goto-char (point-min))
+           (delete-region (point) (+ (point) 2)))
+         (unless (zerop (buffer-size))
+           (let ((result (dns-read (buffer-string))))
+             (if fullp
+                 result
+               (let ((answer (car (dns-get 'answers result))))
+                 (when (eq type (dns-get 'type answer))
+                   (dns-get 'data answer)))))))))))
 
 (provide 'dns)