Browse Source

r11725@Kushana: nickm | 2006-12-28 14:44:56 -0500
Partial solution to 326: downgrade single-nameserver failures to INFO.


svn:r9201

Nick Mathewson 18 years ago
parent
commit
460a476efa
3 changed files with 19 additions and 6 deletions
  1. 2 0
      ChangeLog
  2. 11 6
      doc/TODO
  3. 6 0
      src/or/dns.c

+ 2 - 0
ChangeLog

@@ -121,6 +121,8 @@ Changes in version 0.1.2.5-xxxx - 200?-??-??
       Edman.
       Edman.
     - Removed the supposedly misleading error message mentioned in Bug #294.
     - Removed the supposedly misleading error message mentioned in Bug #294.
       Patch from Matt Edman.
       Patch from Matt Edman.
+    - Stop warning when a single nameserver fails: only warn when _all_ of
+      our nameservers have failed.  (Part of a solution to bug #326.)
 
 
   o Controller features:
   o Controller features:
     - Have GETINFO dir/status/* work on hosts with DirPort disabled.
     - Have GETINFO dir/status/* work on hosts with DirPort disabled.

+ 11 - 6
doc/TODO

@@ -100,7 +100,7 @@ N - DNS improvements
         o Cache answers client-side
         o Cache answers client-side
         o Add to Tor-resolve.py
         o Add to Tor-resolve.py
         o Add to tor-resolve
         o Add to tor-resolve
-d   - Be a DNS proxy.
+    D Be a DNS proxy.
     o Check for invalid characters in hostnames before trying to resolve
     o Check for invalid characters in hostnames before trying to resolve
       them.  (This will help catch attempts do to mean things to our DNS
       them.  (This will help catch attempts do to mean things to our DNS
       server, and bad software that tries to do DNS lookups on whole URLs.)
       server, and bad software that tries to do DNS lookups on whole URLs.)
@@ -113,15 +113,16 @@ d   - Be a DNS proxy.
     o Bug 363: Warn and die if we can't find a nameserver and we're running a
     o Bug 363: Warn and die if we can't find a nameserver and we're running a
       server; don't fall back to 127.0.0.1.
       server; don't fall back to 127.0.0.1.
     o Re-check dns when we change IP addresses, rather than every 12 hours
     o Re-check dns when we change IP addresses, rather than every 12 hours
-    - Bug 326: Give fewer error messages from nameservers. 
+    . Bug 326: Give fewer error messages from nameservers.
-      - Only warn when _all_ nameservers are down; otherwise info.
+      o Only warn when _all_ nameservers are down; otherwise info.
       - Increase timeout; what's industry standard?
       - Increase timeout; what's industry standard?
         - Alternatively, raise timeout when nameserver dies but comes back
         - Alternatively, raise timeout when nameserver dies but comes back
           quickly?
           quickly?
       - Don't believe that our sole nameserver is dead?  or, not until more
       - Don't believe that our sole nameserver is dead?  or, not until more
         failures than it would take to think one of several nameservers was
         failures than it would take to think one of several nameservers was
         dead?
         dead?
-      - Possibly, don't warn until second retry of a nameserver gets no
+        - easy: adjust global_max_nameserver_timeout / global_timeout.
+      X Possibly, don't warn until second retry of a nameserver gets no
         answer?
         answer?
       - warn if all of your nameservers go down and stay down for like
       - warn if all of your nameservers go down and stay down for like
         5 minutes.
         5 minutes.
@@ -410,8 +411,6 @@ R - add d64 and fp64 along-side d and fp so people can paste status
       - Allow EXTENDCIRCUIT to unknown server.
       - Allow EXTENDCIRCUIT to unknown server.
       - We need some way to adjust server status, and to tell tor not to
       - We need some way to adjust server status, and to tell tor not to
         download directories/network-status, and a way to force a download.
         download directories/network-status, and a way to force a download.
-      - It would be nice to request address lookups from the controller
-        without using SOCKS.
       - Make everything work with hidden services
       - Make everything work with hidden services
   - Directory system improvements
   - Directory system improvements
     - config option to publish what ports you listen on, beyond
     - config option to publish what ports you listen on, beyond
@@ -419,6 +418,12 @@ R - add d64 and fp64 along-side d and fp so people can paste status
       - Parse this.
       - Parse this.
       - Relay this in networkstatus.
       - Relay this in networkstatus.
 
 
+  - Be a DNS proxy.
+    - Need a way to request address lookups (and allocate a stream ID for
+      them) without having a corresponding client socket.
+      - Once this is done, it would be nice to have a way to request address
+        lookups from the controller without using SOCKS.
+
 Future version:
 Future version:
   - Configuration format really wants sections.
   - Configuration format really wants sections.
   - Good RBL substitute.
   - Good RBL substitute.

+ 6 - 0
src/or/dns.c

@@ -178,6 +178,12 @@ evdns_log_cb(int warn, const char *msg)
   } else if (!strcmpstart(msg, "Search: ")) {
   } else if (!strcmpstart(msg, "Search: ")) {
     return;
     return;
   }
   }
+  if (!strcmpstart(msg, "Nameserver ") && strstr(msg, " has failed: ")) {
+    /* Don't warn about a single failed nameserver; we'll warn with 'all
+     * nameservers have failed' if we're completely out of nameservers;
+     * otherwise, the situation is tolerable. */
+    warn = 0;
+  }
   log(warn?LOG_WARN:LOG_INFO, LD_EXIT, "eventdns: %s", msg);
   log(warn?LOG_WARN:LOG_INFO, LD_EXIT, "eventdns: %s", msg);
 }
 }
 #endif
 #endif