Просмотр исходного кода

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


svn:r12372

Roger Dingledine 16 лет назад
Родитель
Сommit
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
       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:
     - 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
@@ -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
       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:
     - Refuse to start if both ORPort and UseBridges are set. Bugfix
       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)) {
       case -1:
         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));
         return;
       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())) {
     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;
     goto done;
   }