]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
In the glorious future, all relays cache dir info.
authorRoger Dingledine <arma@torproject.org>
Tue, 16 Mar 2010 08:02:18 +0000 (04:02 -0400)
committerRoger Dingledine <arma@torproject.org>
Tue, 16 Mar 2010 08:02:18 +0000 (04:02 -0400)
Now if you're a published relay and you set RefuseUnknownExits, even
if your dirport is off, you'll fetch dir info from the authorities,
fetch it early, and cache it.

In the future, RefuseUnknownExits (or something like it) will be on
by default.

src/or/dirserv.c

index 5f1cb85431a525f1e74f47c1eb3a5783dbac4d97..b5c4c7b506e39f1f60fbad11948e0e1ad8442de1 100644 (file)
@@ -1122,12 +1122,12 @@ directory_fetches_from_authorities(or_options_t *options)
     return 0;
   if (server_mode(options) && router_pick_published_address(options, &addr)<0)
     return 1; /* we don't know our IP address; ask an authority. */
-  if (options->DirPort == 0)
+  if (options->DirPort == 0 && !options->RefuseUnknownExits)
     return 0;
   if (!server_mode(options) || !advertised_server_mode())
     return 0;
   me = router_get_my_routerinfo();
-  if (!me || !me->dir_port)
+  if (!me || (!me->dir_port && !options->RefuseUnknownExits))
     return 0; /* if dirport not advertised, return 0 too */
   return 1;
 }
@@ -1167,7 +1167,11 @@ directory_caches_v2_dir_info(or_options_t *options)
 int
 directory_caches_dir_info(or_options_t *options)
 {
-  return options->BridgeRelay != 0 || options->DirPort != 0;
+  if (options->BridgeRelay || options->DirPort)
+    return 1;
+  if (!server_mode(options) || !advertised_server_mode())
+    return 0;
+  return options->RefuseUnknownExits;
 }
 
 /** Return 1 if we want to allow remote people to ask us directory