[or-cvs] r14113: an elaborate no-op. i hope. (tor/branches/tor-0_2_0-patches/src/or)

arma at seul.org arma at seul.org
Tue Mar 18 21:17:15 UTC 2008


Author: arma
Date: 2008-03-18 17:17:15 -0400 (Tue, 18 Mar 2008)
New Revision: 14113

Modified:
   tor/branches/tor-0_2_0-patches/src/or/directory.c
Log:
an elaborate no-op. i hope.


Modified: tor/branches/tor-0_2_0-patches/src/or/directory.c
===================================================================
--- tor/branches/tor-0_2_0-patches/src/or/directory.c	2008-03-18 20:05:28 UTC (rev 14112)
+++ tor/branches/tor-0_2_0-patches/src/or/directory.c	2008-03-18 21:17:15 UTC (rev 14113)
@@ -611,6 +611,29 @@
   update_certificate_downloads(time(NULL));
 }
 
+/** Evaluate the situation and decide if we should use an encrypted
+ * "begindir-style" connection for this directory request.
+ * 1) If or_port is 0, or it's a direct conn and or_port is firewalled, no.
+ * 2) If we prefer to avoid begindir conns, and we're not fetching or
+ * publishing a bridge relay descriptor, no.
+ * 3) Else yes.
+ */
+static int
+directory_command_should_use_begindir(or_options_t *options, uint32_t addr,
+                                      int or_port, uint8_t router_purpose,
+                                      int anonymized_connection)
+{
+  if (!or_port)
+    return 0; /* We don't know an ORPort -- no chance. */
+  if (!anonymized_connection &&
+      !fascist_firewall_allows_address_or(addr, or_port))
+    return 0; /* We're firewalled -- also no chance. */
+  if (!options->TunnelDirConns &&
+      router_purpose != ROUTER_PURPOSE_BRIDGE)
+    return 0; /* We prefer to avoid using begindir conns. Fine. */
+  return 1;
+}
+
 /** Helper for directory_initiate_command_routerstatus: send the
  * command to a server whose address is <b>address</b>, whose IP is
  * <b>addr</b>, whose directory port is <b>dir_port</b>, whose tor version
@@ -627,11 +650,9 @@
 {
   dir_connection_t *conn;
   or_options_t *options = get_options();
-  int use_begindir = supports_begindir && or_port &&
-                     (options->TunnelDirConns ||
-                      router_purpose == ROUTER_PURPOSE_BRIDGE) &&
-                     (anonymized_connection ||
-                      fascist_firewall_allows_address_or(addr, or_port));
+  int use_begindir = supports_begindir &&
+                     directory_command_should_use_begindir(options, addr,
+                       or_port, router_purpose, anonymized_connection);
 
   tor_assert(address);
   tor_assert(addr);



More information about the tor-commits mailing list