Просмотр исходного кода

r12122@Kushana: nickm | 2007-02-02 10:41:39 -0500
Fail when we are unable to parse the nameserver configuration.


svn:r9475

Nick Mathewson 17 лет назад
Родитель
Сommit
07e6eecdb2
4 измененных файлов с 12 добавлено и 8 удалено
  1. 1 0
      ChangeLog
  2. 4 2
      src/or/config.c
  3. 6 5
      src/or/dns.c
  4. 1 1
      src/or/or.h

+ 1 - 0
ChangeLog

@@ -63,6 +63,7 @@ Changes in version 0.1.2.7-alpha - 2007-??-??
     - Handle TTL values correctly on reverse DNS lookups.
     - Stop using the reserved ac_cv namespace in our configure script.
     - Call stat() slightly less often; use fstat() when possible.
+    - Treat failure to parse resolv.conf as an error.
 
   o Major features:
     - Weight directory requests by advertised bandwidth. Now we can

+ 4 - 2
src/or/config.c

@@ -990,11 +990,13 @@ options_act(or_options_t *old_options)
           inform_testing_reachability();
       }
       cpuworkers_rotate();
-      dns_reset();
+      if (dns_reset())
+        return -1;
     }
 #ifdef USE_EVENTDNS
     else {
-      dns_reset();
+      if (dns_reset())
+        return -1;
     }
 #endif
   }

+ 6 - 5
src/or/dns.c

@@ -222,8 +222,9 @@ dns_init(void)
   return 0;
 }
 
-/** Called when DNS-related options change (or may have changed) */
-void
+/** Called when DNS-related options change (or may have changed).  Returns -1
+ * on failure, 0 on success. */
+int
 dns_reset(void)
 {
 #ifdef USE_EVENTDNS
@@ -236,8 +237,7 @@ dns_reset(void)
     resolv_conf_mtime = 0;
   } else {
     if (configure_nameservers(0) < 0)
-      /* XXXX012 */
-      return;
+      return -1;
   }
 #else
   dnsworkers_rotate();
@@ -322,7 +322,8 @@ dns_free_all(void)
     SMARTLIST_FOREACH(cached_resolve_pqueue, cached_resolve_t *, res,
       {
         /* XXXX012 The hash lookups here could be quite slow; remove them
-         * once we're happy. */
+         * once we're happy. (Leave them in for at least 0.1.2.7-alpha, so they
+         * get some testing.) -NM */
         if (res->state == CACHE_STATE_DONE) {
           cached_resolve_t *found = HT_FIND(cache_map, &cache_root, res);
           tor_assert(!found || found != res);

+ 1 - 1
src/or/or.h

@@ -2415,7 +2415,7 @@ uint32_t dns_clip_ttl(uint32_t ttl);
 int connection_dns_finished_flushing(connection_t *conn);
 int connection_dns_reached_eof(connection_t *conn);
 int connection_dns_process_inbuf(connection_t *conn);
-void dns_reset(void);
+int dns_reset(void);
 void connection_dns_remove(edge_connection_t *conn);
 void assert_connection_edge_not_dns_pending(edge_connection_t *conn);
 void assert_all_pending_dns_resolves_ok(void);