Browse Source

router: eliminate router_update_info_send_unencrypted()

Remove router_update_info_send_unencrypted(), and move its code into the
relevant functions.

Then, re-use an options pointer.

Preparation for testing 29017 and 20918.
teor 6 years ago
parent
commit
9cab988696
1 changed files with 20 additions and 7 deletions
  1. 20 7
      src/feature/relay/router.c

+ 20 - 7
src/feature/relay/router.c

@@ -2066,8 +2066,17 @@ router_build_fresh_routerinfo(routerinfo_t **ri_out)
 
   ri->declared_family = get_my_declared_family(options);
 
-  ri->purpose =
-    options->BridgeRelay ? ROUTER_PURPOSE_BRIDGE : ROUTER_PURPOSE_GENERAL;
+  if (options->BridgeRelay) {
+    ri->purpose = ROUTER_PURPOSE_BRIDGE;
+    /* Bridges shouldn't be able to send their descriptors unencrypted,
+     anyway, since they don't have a DirPort, and always connect to the
+     bridge authority anonymously.  But just in case they somehow think of
+     sending them on an unencrypted connection, don't allow them to try. */
+    ri->cache_info.send_unencrypted = 0;
+  } else {
+    ri->purpose = ROUTER_PURPOSE_GENERAL;
+    ri->cache_info.send_unencrypted = 1;
+  }
 
   goto done;
 
@@ -2090,6 +2099,7 @@ static extrainfo_t *
 router_build_fresh_extrainfo(const routerinfo_t *ri)
 {
   extrainfo_t *ei = NULL;
+  const or_options_t *options = get_options();
 
   if (BUG(!ri))
     return NULL;
@@ -2097,7 +2107,7 @@ router_build_fresh_extrainfo(const routerinfo_t *ri)
   /* Now generate the extrainfo. */
   ei = tor_malloc_zero(sizeof(extrainfo_t));
   ei->cache_info.is_extrainfo = 1;
-  strlcpy(ei->nickname, get_options()->Nickname, sizeof(ei->nickname));
+  strlcpy(ei->nickname, options->Nickname, sizeof(ei->nickname));
   ei->cache_info.published_on = ri->cache_info.published_on;
   ei->cache_info.signing_key_cert =
     tor_cert_dup(get_master_signing_key_cert());
@@ -2105,6 +2115,13 @@ router_build_fresh_extrainfo(const routerinfo_t *ri)
   memcpy(ei->cache_info.identity_digest, ri->cache_info.identity_digest,
          DIGEST_LEN);
 
+  if (options->BridgeRelay) {
+    /* See note in router_build_fresh_routerinfo(). */
+    ei->cache_info.send_unencrypted = 0;
+  } else {
+    ei->cache_info.send_unencrypted = 1;
+  }
+
   return ei;
 }
 
@@ -2275,10 +2292,6 @@ router_build_fresh_descriptor(routerinfo_t **r, extrainfo_t **e)
   if (result < 0)
     goto err;
 
-  /* TODO: fold into router_update_extrainfo_descriptor_body() and
-   * router_update_routerinfo_descriptor_body() ? */
-  router_update_info_send_unencrypted(ri, ei);
-
   if (ei) {
      if (BUG(routerinfo_incompatible_with_extrainfo(ri->identity_pkey, ei,
                                                     &ri->cache_info, NULL))) {