Prechádzať zdrojové kódy

Bugfix on r13098. Backport candidate.
When we made bridge authorities stop serving bridge descriptors over
unencrypted links, we also broke DirPort reachability testing for
bridges. So bridges with a non-zero DirPort were printing spurious
warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.


svn:r17945

Roger Dingledine 16 rokov pred
rodič
commit
d95b63f1e4
3 zmenil súbory, kde vykonal 11 pridanie a 5 odobranie
  1. 4 0
      ChangeLog
  2. 2 2
      doc/TODO.021
  3. 5 3
      src/or/router.c

+ 4 - 0
ChangeLog

@@ -58,6 +58,10 @@ Changes in version 0.2.1.10-alpha - 2009-01-0?
       from rovv.
     - If a hidden service sends us an END cell, do not consider
       retrying the connection; just close it. Patch from rovv.
+    - When we made bridge authorities stop serving bridge descriptors over
+      unencrypted links, we also broke DirPort reachability testing for
+      bridges. So bridges with a non-zero DirPort were printing spurious
+      warns to their logs. Bugfix on 0.2.0.16-alpha. Fixes bug 709.
 
   o Deprecated and removed features:
     - The old "tor --version --version" command, which would print out

+ 2 - 2
doc/TODO.021

@@ -122,13 +122,13 @@ R   - then document the bridge user download timeline.
 For 0.2.1.x-alpha:
 R d bug: if we launch using bridges, and then stop using bridges, we
     still have our bridges in our entryguards section, and may use them.
-R d add an event to report geoip summaries to vidalia for bridge relays,
+  o add an event to report geoip summaries to vidalia for bridge relays,
     so vidalia can say "recent activity (1-8 users) from sa".
 R - investigate: it looks like if the bridge authority is unreachable,
     we're not falling back on querying bridges directly?
 R - if "no running bridges known", an application request should make
     us retry all our bridges.
-R d Setting DirPort when acting as bridge will give false Warnings
+  o Setting DirPort when acting as bridge will give false Warnings
 
 For 0.2.1.x:
   - Proposals to do:

+ 5 - 3
src/or/router.c

@@ -1412,10 +1412,12 @@ router_rebuild_descriptor(int force)
 
   ri->purpose =
     options->BridgeRelay ? ROUTER_PURPOSE_BRIDGE : ROUTER_PURPOSE_GENERAL;
-  if (!options->BridgeRelay) {
-    ri->cache_info.send_unencrypted = 1;
+  ri->cache_info.send_unencrypted = 1;
+  /* Let bridges serve their own descriptors unencrypted, so they can
+   * pass reachability testing. (If they want to be harder to notice,
+   * they can always leave the DirPort off). */
+  if (!options->BridgeRelay)
     ei->cache_info.send_unencrypted = 1;
-  }
 
   router_get_router_hash(ri->cache_info.signed_descriptor_body,
                          ri->cache_info.signed_descriptor_digest);