浏览代码

don't try to build circuits until we have 3 running servers;
and for networks that are very small, having more than a quarter
of the descriptors is much harder than having equal to or more than
a quarter of the descriptors -- follow the spec.


svn:r5720

Roger Dingledine 19 年之前
父节点
当前提交
da06f3553c
共有 1 个文件被更改,包括 4 次插入6 次删除
  1. 4 6
      src/or/routerlist.c

+ 4 - 6
src/or/routerlist.c

@@ -3487,7 +3487,7 @@ update_router_descriptor_downloads(time_t now)
 int
 router_have_minimum_dir_info(void)
 {
-  int tot = 0, any_running = 0;
+  int tot = 0, num_running = 0;
   int n_ns, res, avg;
   static int have_enough = 0;
   if (!networkstatus_list || !routerlist) {
@@ -3504,12 +3504,10 @@ router_have_minimum_dir_info(void)
   avg = tot / n_ns;
   SMARTLIST_FOREACH(routerstatus_list, local_routerstatus_t *, rs,
      {
-       if (rs->status.is_running) {
-         any_running = 1;
-         break;
-       }
+       if (rs->status.is_running)
+         num_running++;
      });
-  res = smartlist_len(routerlist->routers) > (avg/4) && any_running;
+  res = smartlist_len(routerlist->routers) >= (avg/4) && num_running > 2;
  done:
   if (res && !have_enough) {
     log(LOG_NOTICE, LD_DIR,