[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[or-cvs] r12512: If we're trying to fetch a bridge descriptor and there's no (in tor/trunk: . src/or)



Author: arma
Date: 2007-11-16 02:31:51 -0500 (Fri, 16 Nov 2007)
New Revision: 12512

Modified:
   tor/trunk/ChangeLog
   tor/trunk/src/or/circuitbuild.c
Log:
If we're trying to fetch a bridge descriptor and there's no way
the bridge authority could help us (for example, we don't know
a digest, or there is no bridge authority), don't be so eager to
fall back to asking the bridge authority.


Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog	2007-11-16 07:29:01 UTC (rev 12511)
+++ tor/trunk/ChangeLog	2007-11-16 07:31:51 UTC (rev 12512)
@@ -12,6 +12,10 @@
       rebuild the descriptor.
     - When picking v2 hidden service directories, don't pick ones that
       aren't listed as Running.
+    - If we're trying to fetch a bridge descriptor and there's no way
+      the bridge authority could help us (for example, we don't know
+      a digest, or there is no bridge authority), don't be so eager to
+      fall back to asking the bridge authority.
 
   o Minor features:
     - When we negotiate a v2 OR connection (not yet implemented), accept

Modified: tor/trunk/src/or/circuitbuild.c
===================================================================
--- tor/trunk/src/or/circuitbuild.c	2007-11-16 07:29:01 UTC (rev 12511)
+++ tor/trunk/src/or/circuitbuild.c	2007-11-16 07:31:51 UTC (rev 12512)
@@ -2945,6 +2945,7 @@
   or_options_t *options = get_options();
   int num_bridge_auths = get_n_authorities(BRIDGE_AUTHORITY);
   int ask_bridge_directly;
+  int can_use_bridge_authority;
 
   if (!bridge_list)
     return;
@@ -2960,9 +2961,10 @@
       in.s_addr = htonl(bridge->addr);
       tor_inet_ntoa(&in, address_buf, sizeof(address_buf));
 
-      ask_bridge_directly = tor_digest_is_zero(bridge->identity) ||
-                            !options->UpdateBridgesFromAuthority ||
-                            !num_bridge_auths;
+      can_use_bridge_authority = !tor_digest_is_zero(bridge->identity) &&
+                                 num_bridge_auths;
+      ask_bridge_directly = !can_use_bridge_authority ||
+                            !options->UpdateBridgesFromAuthority;
       log_debug(LD_DIR, "ask_bridge_directly=%d (%d, %d, %d)",
                 ask_bridge_directly, tor_digest_is_zero(bridge->identity),
                 !options->UpdateBridgesFromAuthority, !num_bridge_auths);
@@ -2971,9 +2973,9 @@
           !fascist_firewall_allows_address_or(bridge->addr, bridge->port)) {
         log_notice(LD_DIR, "Bridge at '%s:%d' isn't reachable by our "
                    "firewall policy. %s.", address_buf, bridge->port,
-                   num_bridge_auths ? "Asking bridge authority instead" :
-                                      "Skipping");
-        if (num_bridge_auths)
+                   can_use_bridge_authority ?
+                     "Asking bridge authority instead" : "Skipping");
+        if (can_use_bridge_authorit)
           ask_bridge_directly = 0;
         else
           continue;