[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r6975: Oops. We shouldnt initialize eventdns when we are not being (in tor/trunk: . src/or)



Author: nickm
Date: 2006-08-04 14:24:41 -0400 (Fri, 04 Aug 2006)
New Revision: 6975

Modified:
   tor/trunk/
   tor/trunk/src/or/dns.c
Log:
 r7008@Kushana:  nickm | 2006-08-03 10:03:39 -0700
 Oops. We shouldnt initialize eventdns when we are not being a server and not resolving anything.



Property changes on: tor/trunk
___________________________________________________________________
Name: svk:merge
   - 1f724f9b-111a-0410-b636-93f1a77c1813:/local/or/tor/trunk:8207
c95137ef-5f19-0410-b913-86e773d04f59:/tor/branches/eventdns:7007
c95137ef-5f19-0410-b913-86e773d04f59:/tor/branches/oo-connections:6950
   + 1f724f9b-111a-0410-b636-93f1a77c1813:/local/or/tor/trunk:8207
c95137ef-5f19-0410-b913-86e773d04f59:/tor/branches/eventdns:7008
c95137ef-5f19-0410-b913-86e773d04f59:/tor/branches/oo-connections:6950

Modified: tor/trunk/src/or/dns.c
===================================================================
--- tor/trunk/src/or/dns.c	2006-08-04 18:24:25 UTC (rev 6974)
+++ tor/trunk/src/or/dns.c	2006-08-04 18:24:41 UTC (rev 6975)
@@ -104,6 +104,8 @@
 static int dnsworker_main(void *data);
 static int spawn_dnsworker(void);
 static int spawn_enough_dnsworkers(void);
+#else
+static void configure_nameservers(void);
 #endif
 static void assert_cache_ok(void);
 static void assert_resolve_ok(cached_resolve_t *resolve);
@@ -156,34 +158,10 @@
 void
 dns_init(void)
 {
-
   init_cache_map();
   dnsworkers_rotate();
-#ifdef USE_EVENTDNS
-  {
-    or_options_t *options = get_options();
-    eventdns_set_log_fn(eventdns_log_cb);
-    if (options->Nameservers && smartlist_len(options->Nameservers)) {
-      log_info(LD_EXIT, "Configuring nameservers from Tor configuration");
-      SMARTLIST_FOREACH(options->Nameservers, const char *, ip,
-        {
-          struct in_addr in;
-          if (tor_inet_aton(ip, &in)) {
-            log_info(LD_EXIT, "Adding nameserver '%s'", ip);
-            eventdns_nameserver_add(in.s_addr);
-          }
-        });
-    } else {
-#ifdef MS_WINDOWS
-      eventdns_config_windows_nameservers();
-#else
-      log_info(LD_EXIT, "Parsing /etc/resolv.conf");
-      eventdns_resolv_conf_parse(DNS_OPTION_NAMESERVERS|DNS_OPTION_MISC,
-                                 "/etc/resolv.conf");
-#endif
-    }
-  }
-#endif
+  if (server_mode(get_options()))
+    configure_nameservers();
 }
 
 uint32_t
@@ -1198,7 +1176,37 @@
   tor_assert(0);
   return 0;
 }
+static int nameservers_configured = 0;
 static void
+configure_nameservers(void)
+{
+  or_options_t *options;
+  if (nameservers_configured)
+    return;
+  options = get_options();
+  eventdns_set_log_fn(eventdns_log_cb);
+  if (options->Nameservers && smartlist_len(options->Nameservers)) {
+    log_info(LD_EXIT, "Configuring nameservers from Tor configuration");
+    SMARTLIST_FOREACH(options->Nameservers, const char *, ip,
+      {
+        struct in_addr in;
+        if (tor_inet_aton(ip, &in)) {
+          log_info(LD_EXIT, "Adding nameserver '%s'", ip);
+          eventdns_nameserver_add(in.s_addr);
+        }
+      });
+  } else {
+#ifdef MS_WINDOWS
+    eventdns_config_windows_nameservers();
+#else
+    log_info(LD_EXIT, "Parsing /etc/resolv.conf");
+    eventdns_resolv_conf_parse(DNS_OPTION_NAMESERVERS|DNS_OPTION_MISC,
+                               "/etc/resolv.conf");
+#endif
+  }
+  nameservers_configured = 1;
+}
+static void
 eventdns_callback(int result, char type, int count, int ttl, void *addresses,
                   void *arg)
 {
@@ -1237,6 +1245,8 @@
 {
   char *addr = tor_strdup(exitconn->_base.address);
   int r;
+  if (!nameservers_configured)
+    configure_nameservers();
   log_info(LD_EXIT, "Launching eventdns request for %s",
            escaped_safe_str(exitconn->_base.address));
   r = eventdns_resolve(exitconn->_base.address, DNS_QUERY_NO_SEARCH,