[tor-commits] [tor/master] Remove orconn_identity_map.

nickm at torproject.org nickm at torproject.org
Thu Dec 8 21:53:43 UTC 2016


commit cdce221e68489cddad579da0ce804ce2eb5804b3
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon Sep 19 16:24:09 2016 -0400

    Remove orconn_identity_map.
    
    It is no longer needed; look up channels by identity instead.
---
 src/or/connection_or.c | 58 +++-----------------------------------------------
 src/or/or.h            |  2 --
 2 files changed, 3 insertions(+), 57 deletions(-)

diff --git a/src/or/connection_or.c b/src/or/connection_or.c
index ca5f300..dbeab26 100644
--- a/src/or/connection_or.c
+++ b/src/or/connection_or.c
@@ -77,54 +77,20 @@ static void connection_or_change_state(or_connection_t *conn, uint8_t state);
 
 /**************************************************************/
 
-/** Map from identity digest of connected OR or desired OR to a connection_t
- * with that identity digest.  If there is more than one such connection_t,
- * they form a linked list, with next_with_same_id as the next pointer. */
-static digestmap_t *orconn_identity_map = NULL; // XXXX 15056 disused.
-
 /** Global map between Extended ORPort identifiers and OR
  *  connections. */
 static digestmap_t *orconn_ext_or_id_map = NULL;
 
-/** If conn is listed in orconn_identity_map, remove it, and clear
- * conn->identity_digest.  Otherwise do nothing. */
+/** Clear clear conn->identity_digest and update other data
+ * structures as appropriate.*/
 void
 connection_or_remove_from_identity_map(or_connection_t *conn)
 {
-  or_connection_t *tmp;
   tor_assert(conn);
-  if (!orconn_identity_map)
-    return;
-  tmp = digestmap_get(orconn_identity_map, conn->identity_digest);
-  if (!tmp) {
-    if (!tor_digest_is_zero(conn->identity_digest)) {
-      log_warn(LD_BUG, "Didn't find connection '%s' on identity map when "
-               "trying to remove it.",
-               conn->nickname ? conn->nickname : "NULL");
-    }
-    return;
-  }
-  if (conn == tmp) {
-    if (conn->next_with_same_id)
-      digestmap_set(orconn_identity_map, conn->identity_digest,
-                    conn->next_with_same_id);
-    else
-      digestmap_remove(orconn_identity_map, conn->identity_digest);
-  } else {
-    while (tmp->next_with_same_id) {
-      if (tmp->next_with_same_id == conn) {
-        tmp->next_with_same_id = conn->next_with_same_id;
-        break;
-      }
-      tmp = tmp->next_with_same_id;
-    }
-  }
   memset(conn->identity_digest, 0, DIGEST_LEN);
-  conn->next_with_same_id = NULL;
 }
 
-/** Remove all entries from the identity-to-orconn map, and clear
- * all identities in OR conns.*/
+/** Clear all identities in OR conns.*/
 void
 connection_or_clear_identity_map(void)
 {
@@ -134,12 +100,8 @@ connection_or_clear_identity_map(void)
     if (conn->type == CONN_TYPE_OR) {
       or_connection_t *or_conn = TO_OR_CONN(conn);
       memset(or_conn->identity_digest, 0, DIGEST_LEN);
-      or_conn->next_with_same_id = NULL;
     }
   });
-
-  digestmap_free(orconn_identity_map, NULL);
-  orconn_identity_map = NULL;
 }
 
 /** Change conn->identity_digest to digest, and add conn into
@@ -150,12 +112,9 @@ connection_or_set_identity_digest(or_connection_t *conn,
                                   const ed25519_public_key_t *ed_id)
 {
   (void) ed_id; // DOCDOC // XXXX not implemented yet. 15056
-  or_connection_t *tmp;
   tor_assert(conn);
   tor_assert(rsa_digest);
 
-  if (!orconn_identity_map)
-    orconn_identity_map = digestmap_new();
   if (tor_memeq(conn->identity_digest, rsa_digest, DIGEST_LEN))
     return;
 
@@ -172,20 +131,9 @@ connection_or_set_identity_digest(or_connection_t *conn,
   if (tor_digest_is_zero(rsa_digest))
     return;
 
-  tmp = digestmap_set(orconn_identity_map, rsa_digest, conn);
-  conn->next_with_same_id = tmp;
-
   /* Deal with channels */
   if (conn->chan)
     channel_set_identity_digest(TLS_CHAN_TO_BASE(conn->chan), rsa_digest);
-
-#if 1
-  /* Testing code to check for bugs in representation. */
-  for (; tmp; tmp = tmp->next_with_same_id) {
-    tor_assert(tor_memeq(tmp->identity_digest, rsa_digest, DIGEST_LEN));
-    tor_assert(tmp != conn);
-  }
-#endif
 }
 
 /** Remove the Extended ORPort identifier of <b>conn</b> from the
diff --git a/src/or/or.h b/src/or/or.h
index d9d3ec7..32c194a 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1581,8 +1581,6 @@ typedef struct or_connection_t {
                     * bandwidthburst. (OPEN ORs only) */
   int write_bucket; /**< When this hits 0, stop writing. Like read_bucket. */
 
-  struct or_connection_t *next_with_same_id; /**< Next connection with same
-                                              * identity digest as this one. */
   /** Last emptied read token bucket in msec since midnight; only used if
    * TB_EMPTY events are enabled. */
   uint32_t read_emptied_time;





More information about the tor-commits mailing list