소스 검색

In the glorious future, all relays cache dir info.

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.
Roger Dingledine 15 년 전
부모
커밋
fe3380609e
1개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. 7 3
      src/or/dirserv.c

+ 7 - 3
src/or/dirserv.c

@@ -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