浏览代码

add the other v3 dir bugfixes. my bridge is now working
again even when my datadir starts empty. phew.


svn:r12372

Roger Dingledine 18 年之前
父节点
当前提交
735498cb27
共有 3 个文件被更改,包括 16 次插入6 次删除
  1. 12 5
      ChangeLog
  2. 2 0
      src/or/directory.c
  3. 2 1
      src/or/routerlist.c

+ 12 - 5
ChangeLog

@@ -18,6 +18,18 @@ Changes in version 0.2.0.10-alpha - 2007-11-0?
       maybe in other situations too). Bugfix on 0.2.0.9-alpha; reported
       maybe in other situations too). Bugfix on 0.2.0.9-alpha; reported
       by Fabian Keil.
       by Fabian Keil.
 
 
+  o Major bugfixes (v3 dir, bugfixes on 0.2.0.9-alpha):
+    - Consider replacing the current consensus when certificates arrive
+      that make the pending consensus valid.  Previously, we were only
+      considering replacement when the new certs _didn't_ help.
+    - Fix an assert error on startup if we didn't already have the
+      consensus and certs cached in our datadirectory: we were caching
+      the consensus in consensus_waiting_for_certs but then free'ing it
+      right after.
+    - Avoid sending a request for "keys/fp" (for which we'll get a 400 Bad
+      Request) if we need more v3 certs but we've already got pending
+      requests for all of them.
+
   o New requirements:
   o New requirements:
     - Drop support for OpenSSL version 0.9.6.  Just about nobody was using
     - Drop support for OpenSSL version 0.9.6.  Just about nobody was using
       it, it had no AES, and it hasn't seen any security patches since
       it, it had no AES, and it hasn't seen any security patches since
@@ -67,11 +79,6 @@ Changes in version 0.2.0.10-alpha - 2007-11-0?
       the Tor process. Patch from Marco Bonetti with tweaks from Mike
       the Tor process. Patch from Marco Bonetti with tweaks from Mike
       Perry.
       Perry.
 
 
-  o Major bugfixes:
-    - Consider replace the current consensus when certificates arrive
-      that make the pending consensus valid.  Previously, we were only
-      considering replacement when the new certs _didn't_ help.
-
   o Minor bugfixes:
   o Minor bugfixes:
     - Refuse to start if both ORPort and UseBridges are set. Bugfix
     - Refuse to start if both ORPort and UseBridges are set. Bugfix
       on 0.2.0.x.
       on 0.2.0.x.

+ 2 - 0
src/or/directory.c

@@ -670,6 +670,8 @@ directory_initiate_command(const char *address, uint32_t addr,
                                dir_port)) {
                                dir_port)) {
       case -1:
       case -1:
         connection_dir_request_failed(conn); /* retry if we want */
         connection_dir_request_failed(conn); /* retry if we want */
+        /* XXX we only pass 'conn' above, not 'resource', 'payload',
+         * etc. So in many situations it can't retry! -RD */
         connection_free(TO_CONN(conn));
         connection_free(TO_CONN(conn));
         return;
         return;
       case 1:
       case 1:

+ 2 - 1
src/or/routerlist.c

@@ -3911,7 +3911,8 @@ update_router_have_minimum_dir_info(void)
 
 
   if (should_delay_dir_fetches(get_options())) {
   if (should_delay_dir_fetches(get_options())) {
     log_notice(LD_DIR, "no known bridge descriptors running yet; stalling");
     log_notice(LD_DIR, "no known bridge descriptors running yet; stalling");
-    strlcpy(dir_info_status, "No bridge descriptors.",sizeof(dir_info_status));
+    strlcpy(dir_info_status, "No live bridge descriptors.",
+            sizeof(dir_info_status));
     res = 0;
     res = 0;
     goto done;
     goto done;
   }
   }