[or-cvs] r17643: {tor} Move edge-only flags from connection_t to edge_connection_t. (in tor/trunk: . src/or)

nickm at seul.org nickm at seul.org
Wed Dec 17 14:59:29 UTC 2008


Author: nickm
Date: 2008-12-17 09:59:28 -0500 (Wed, 17 Dec 2008)
New Revision: 17643

Modified:
   tor/trunk/ChangeLog
   tor/trunk/src/or/circuitlist.c
   tor/trunk/src/or/circuituse.c
   tor/trunk/src/or/connection.c
   tor/trunk/src/or/connection_edge.c
   tor/trunk/src/or/control.c
   tor/trunk/src/or/main.c
   tor/trunk/src/or/or.h
   tor/trunk/src/or/relay.c
Log:
Move edge-only flags from connection_t to edge_connection_t.

Modified: tor/trunk/ChangeLog
===================================================================
--- tor/trunk/ChangeLog	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/ChangeLog	2008-12-17 14:59:28 UTC (rev 17643)
@@ -67,6 +67,9 @@
   o Code simplifications and refactoring:
     - Rename the confusing or_is_obsolete field to the more appropriate
       is_bad_for_new_circs, and move it to or_connection_t where it belongs.
+    - Move edge-only flags from connection_t to edge_connection_t: not
+      only is this better coding, but on machines of plausible alignment,
+      it should save 4-8 bytes per connection_t.  "Every little bit helps."
 
 
 Changes in version 0.2.1.8-alpha - 2008-12-08

Modified: tor/trunk/src/or/circuitlist.c
===================================================================
--- tor/trunk/src/or/circuitlist.c	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/src/or/circuitlist.c	2008-12-17 14:59:28 UTC (rev 17643)
@@ -1096,7 +1096,7 @@
         /* The client will see a DESTROY, and infer that the connections
          * are closing because the circuit is getting torn down.  No need
          * to send an end cell. */
-        conn->_base.edge_has_sent_end = 1;
+        conn->edge_has_sent_end = 1;
         conn->end_reason = END_STREAM_REASON_DESTROY;
         conn->end_reason |= END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED;
         connection_mark_for_close(TO_CONN(conn));

Modified: tor/trunk/src/or/circuituse.c
===================================================================
--- tor/trunk/src/or/circuituse.c	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/src/or/circuituse.c	2008-12-17 14:59:28 UTC (rev 17643)
@@ -1087,13 +1087,13 @@
       /* XXXX021 Duplicates checks in connection_ap_handshake_attach_circuit
        * XXXX021 Fix this, then backport it? */
       routerinfo_t *router = router_get_by_nickname(conn->chosen_exit_name, 1);
-      int opt = conn->_base.chosen_exit_optional;
+      int opt = conn->chosen_exit_optional;
       if (router && !connection_ap_can_use_exit(conn, router)) {
         log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP,
                "Requested exit point '%s' would refuse request. %s.",
                conn->chosen_exit_name, opt ? "Trying others" : "Closing");
         if (opt) {
-          conn->_base.chosen_exit_optional = 0;
+          conn->chosen_exit_optional = 0;
           tor_free(conn->chosen_exit_name);
           /* Try again. */
           return circuit_get_open_circ_or_launch(conn,
@@ -1142,7 +1142,7 @@
     if (desired_circuit_purpose == CIRCUIT_PURPOSE_C_GENERAL) {
       if (conn->chosen_exit_name) {
         routerinfo_t *r;
-        int opt = conn->_base.chosen_exit_optional;
+        int opt = conn->chosen_exit_optional;
         r = router_get_by_nickname(conn->chosen_exit_name, 1);
         if (r) {
           extend_info = extend_info_from_router(r);
@@ -1175,7 +1175,7 @@
                    "Requested exit point '%s' is not known. %s.",
                    conn->chosen_exit_name, opt ? "Trying others" : "Closing");
             if (opt) {
-              conn->_base.chosen_exit_optional = 0;
+              conn->chosen_exit_optional = 0;
               tor_free(conn->chosen_exit_name);
               return 0;
             }
@@ -1394,7 +1394,7 @@
 
     if (conn->chosen_exit_name) {
       routerinfo_t *router = router_get_by_nickname(conn->chosen_exit_name, 1);
-      int opt = conn->_base.chosen_exit_optional;
+      int opt = conn->chosen_exit_optional;
       if (!router && !want_onehop) {
         /* We ran into this warning when trying to extend a circuit to a
          * hidden service directory for which we didn't have a router
@@ -1405,7 +1405,7 @@
                "Requested exit point '%s' is not known. %s.",
                conn->chosen_exit_name, opt ? "Trying others" : "Closing");
         if (opt) {
-          conn->_base.chosen_exit_optional = 0;
+          conn->chosen_exit_optional = 0;
           tor_free(conn->chosen_exit_name);
           return 0;
         }
@@ -1416,7 +1416,7 @@
                "Requested exit point '%s' would refuse request. %s.",
                conn->chosen_exit_name, opt ? "Trying others" : "Closing");
         if (opt) {
-          conn->_base.chosen_exit_optional = 0;
+          conn->chosen_exit_optional = 0;
           tor_free(conn->chosen_exit_name);
           return 0;
         }

Modified: tor/trunk/src/or/connection.c
===================================================================
--- tor/trunk/src/or/connection.c	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/src/or/connection.c	2008-12-17 14:59:28 UTC (rev 17643)
@@ -511,7 +511,8 @@
   tor_assert(conn->marked_for_close);
 
   if (CONN_IS_EDGE(conn)) {
-    if (!conn->edge_has_sent_end) {
+    edge_conn = TO_EDGE_CONN(conn);
+    if (!edge_conn->edge_has_sent_end) {
       log_warn(LD_BUG, "(Harmless.) Edge connection (marked at %s:%d) "
                "hasn't sent end yet?",
                conn->marked_for_close_file, conn->marked_for_close);
@@ -2986,7 +2987,7 @@
 
   if (conn->outbuf_flushlen > 0) {
     tor_assert(connection_is_writing(conn) || conn->write_blocked_on_bw ||
-               conn->edge_blocked_on_circ);
+            (CONN_IS_EDGE(conn) && TO_EDGE_CONN(conn)->edge_blocked_on_circ));
   }
 
   if (conn->hold_open_until_flushed)
@@ -3001,11 +3002,6 @@
     assert_buf_ok(conn->outbuf);
   }
 
-  if (conn->chosen_exit_optional || conn->chosen_exit_retries) {
-    tor_assert(conn->type == CONN_TYPE_AP);
-    tor_assert((TO_EDGE_CONN(conn))->chosen_exit_name);
-  }
-
   if (conn->type == CONN_TYPE_OR) {
     or_connection_t *or_conn = TO_OR_CONN(conn);
     if (conn->state == OR_CONN_STATE_OPEN) {
@@ -3025,6 +3021,11 @@
 
   if (CONN_IS_EDGE(conn)) {
     edge_connection_t *edge_conn = TO_EDGE_CONN(conn);
+    if (edge_conn->chosen_exit_optional || edge_conn->chosen_exit_retries) {
+      tor_assert(conn->type == CONN_TYPE_AP);
+      tor_assert(edge_conn->chosen_exit_name);
+    }
+
     /* XXX unchecked: package window, deliver window. */
     if (conn->type == CONN_TYPE_AP) {
 

Modified: tor/trunk/src/or/connection_edge.c
===================================================================
--- tor/trunk/src/or/connection_edge.c	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/src/or/connection_edge.c	2008-12-17 14:59:28 UTC (rev 17643)
@@ -50,7 +50,7 @@
                                int line, const char *file)
 {
   tor_assert(conn->_base.type == CONN_TYPE_AP);
-  conn->_base.edge_has_sent_end = 1; /* no circ yet */
+  conn->edge_has_sent_end = 1; /* no circ yet */
 
   if (conn->_base.marked_for_close) {
     /* This call will warn as appropriate. */
@@ -171,7 +171,7 @@
       conn->end_reason |= END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED;
     } else {
       /* closing the circuit, nothing to send an END to */
-      conn->_base.edge_has_sent_end = 1;
+      conn->edge_has_sent_end = 1;
       conn->end_reason = END_STREAM_REASON_DESTROY;
       conn->end_reason |= END_STREAM_REASON_FLAG_ALREADY_SENT_CLOSED;
       connection_mark_for_close(TO_CONN(conn));
@@ -219,7 +219,7 @@
   size_t payload_len=1;
   circuit_t *circ;
 
-  if (conn->_base.edge_has_sent_end) {
+  if (conn->edge_has_sent_end) {
     log_warn(LD_BUG,"(Harmless.) Calling connection_edge_end (reason %d) "
              "on an already ended stream?", reason);
     tor_fragile_assert();
@@ -265,7 +265,7 @@
               conn->_base.s);
   }
 
-  conn->_base.edge_has_sent_end = 1;
+  conn->edge_has_sent_end = 1;
   conn->end_reason = reason;
   return 0;
 }
@@ -465,7 +465,7 @@
     /* send an end down the circuit */
     connection_edge_end(conn, END_STREAM_REASON_TIMEOUT);
     /* un-mark it as ending, since we're going to reuse it */
-    conn->_base.edge_has_sent_end = 0;
+    conn->edge_has_sent_end = 0;
     conn->end_reason = 0;
     /* kludge to make us not try this circuit again, yet to allow
      * current streams on it to survive if they can: make it
@@ -560,32 +560,32 @@
   routerinfo_t *r1, *r2;
 
   smartlist_t *conns = get_connection_array();
-  SMARTLIST_FOREACH(conns, connection_t *, conn,
-  {
+  SMARTLIST_FOREACH_BEGIN(conns, connection_t *, conn) {
     if (conn->marked_for_close ||
         conn->type != CONN_TYPE_AP ||
-        conn->state != AP_CONN_STATE_CIRCUIT_WAIT ||
-        (!conn->chosen_exit_optional &&
-         !conn->chosen_exit_retries))
+        conn->state != AP_CONN_STATE_CIRCUIT_WAIT)
       continue;
     edge_conn = TO_EDGE_CONN(conn);
+    if (!edge_conn->chosen_exit_optional &&
+        !edge_conn->chosen_exit_retries)
+      continue;
     r1 = router_get_by_nickname(edge_conn->chosen_exit_name, 0);
     r2 = router_get_by_nickname(info->nickname, 0);
     if (!r1 || !r2 || r1 != r2)
       continue;
     tor_assert(edge_conn->socks_request);
-    if (conn->chosen_exit_optional) {
+    if (edge_conn->chosen_exit_optional) {
       log_info(LD_APP, "Giving up on enclave exit '%s' for destination %s.",
                safe_str(edge_conn->chosen_exit_name),
                escaped_safe_str(edge_conn->socks_request->address));
-      conn->chosen_exit_optional = 0;
+      edge_conn->chosen_exit_optional = 0;
       tor_free(edge_conn->chosen_exit_name); /* clears it */
       /* if this port is dangerous, warn or reject it now that we don't
        * think it'll be using an enclave. */
       consider_plaintext_ports(edge_conn, edge_conn->socks_request->port);
     }
-    if (conn->chosen_exit_retries) {
-      if (--conn->chosen_exit_retries == 0) { /* give up! */
+    if (edge_conn->chosen_exit_retries) {
+      if (--edge_conn->chosen_exit_retries == 0) { /* give up! */
         clear_trackexithost_mappings(edge_conn->chosen_exit_name);
         tor_free(edge_conn->chosen_exit_name); /* clears it */
         /* if this port is dangerous, warn or reject it now that we don't
@@ -593,7 +593,7 @@
         consider_plaintext_ports(edge_conn, edge_conn->socks_request->port);
       }
     }
-  });
+  } SMARTLIST_FOREACH_END(conn);
 }
 
 /** The AP connection <b>conn</b> has just failed while attaching or
@@ -1503,7 +1503,7 @@
 /* DOCDOC */
 #define TRACKHOSTEXITS_RETRIES 5
         if (remapped_to_exit) /* 5 tries before it expires the addressmap */
-          TO_CONN(conn)->chosen_exit_retries = TRACKHOSTEXITS_RETRIES;
+          conn->chosen_exit_retries = TRACKHOSTEXITS_RETRIES;
         *s = 0;
       } else {
         log_warn(LD_APP,"Malformed exit address '%s.exit'. Refusing.",
@@ -1592,7 +1592,7 @@
              routers with this nickname */
           conn->chosen_exit_name =
             tor_strdup(hex_str(r->cache_info.identity_digest, DIGEST_LEN));
-          conn->_base.chosen_exit_optional = 1;
+          conn->chosen_exit_optional = 1;
         }
       }
 

Modified: tor/trunk/src/or/control.c
===================================================================
--- tor/trunk/src/or/control.c	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/src/or/control.c	2008-12-17 14:59:28 UTC (rev 17643)
@@ -2318,7 +2318,7 @@
     circuit_t *tmpcirc = circuit_get_by_edge_conn(ap_conn);
     connection_edge_end(ap_conn, END_STREAM_REASON_TIMEOUT);
     /* Un-mark it as ending, since we're going to reuse it. */
-    ap_conn->_base.edge_has_sent_end = 0;
+    ap_conn->edge_has_sent_end = 0;
     ap_conn->end_reason = 0;
     if (tmpcirc)
       circuit_detach_stream(tmpcirc,ap_conn);

Modified: tor/trunk/src/or/main.c
===================================================================
--- tor/trunk/src/or/main.c	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/src/or/main.c	2008-12-17 14:59:28 UTC (rev 17643)
@@ -502,7 +502,7 @@
         edge_connection_t *edge_conn = TO_EDGE_CONN(conn);
         if (!edge_conn->end_reason)
           edge_conn->end_reason = END_STREAM_REASON_INTERNAL;
-        conn->edge_has_sent_end = 1;
+        edge_conn->edge_has_sent_end = 1;
       }
       connection_close_immediate(conn); /* So we don't try to flush. */
       connection_mark_for_close(conn);

Modified: tor/trunk/src/or/or.h
===================================================================
--- tor/trunk/src/or/or.h	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/src/or/or.h	2008-12-17 14:59:28 UTC (rev 17643)
@@ -223,6 +223,7 @@
 /* !!!! If _CONN_TYPE_MAX is ever over 15, we must grow the type field in
  * connection_t. */
 
+/** True iff <b>x</b> is an edge connection. */
 #define CONN_IS_EDGE(x) \
   ((x)->type == CONN_TYPE_EXIT || (x)->type == CONN_TYPE_AP)
 
@@ -354,17 +355,17 @@
 #define DIR_PURPOSE_UPLOAD_VOTE 10
 /** A connection to a directory server: upload a v3 consensus signature */
 #define DIR_PURPOSE_UPLOAD_SIGNATURES 11
-/** A connection to a directory server: download one or more network-status
- * objects [XXX wtf, these are all the same comment] */
+/** A connection to a directory server: download one or more v3 networkstatus
+ * votes. */
 #define DIR_PURPOSE_FETCH_STATUS_VOTE 12
-/** A connection to a directory server: download one or more network-status
- * objects */
+/** A connection to a directory server: download a v3 detached signatures
+ * object for a consensus. */
 #define DIR_PURPOSE_FETCH_DETACHED_SIGNATURES 13
-/** A connection to a directory server: download one or more network-status
- * objects */
+/** A connection to a directory server: download a v3 networkstatus
+ * consensus. */,
 #define DIR_PURPOSE_FETCH_CONSENSUS 14
-/** A connection to a directory server: download one or more network-status
- * objects */
+/** A connection to a directory server: download one or more directory
+ * authority certificates. */
 #define DIR_PURPOSE_FETCH_CERTIFICATE 15
 
 /** Purpose for connection at a directory server. */
@@ -377,6 +378,8 @@
 #define DIR_PURPOSE_FETCH_RENDDESC_V2 18
 #define _DIR_PURPOSE_MAX 18
 
+/** True iff <b>p</b> is a purpose corresponding to uploading data to a
+ * directory server. */
 #define DIR_PURPOSE_IS_UPLOAD(p)                \
   ((p)==DIR_PURPOSE_UPLOAD_DIR ||               \
    (p)==DIR_PURPOSE_UPLOAD_RENDDESC ||          \
@@ -480,15 +483,20 @@
 /** True iff the circuit purpose <b>p</b> is for a circuit that
  * originated at this node. */
 #define CIRCUIT_PURPOSE_IS_ORIGIN(p) ((p)>_CIRCUIT_PURPOSE_OR_MAX)
+/** True iff the circuit purpose <b>p</b> is for a circuit that originated
+ * here to serve as a client.  (Hidden services don't count here.) */
 #define CIRCUIT_PURPOSE_IS_CLIENT(p) \
   ((p)> _CIRCUIT_PURPOSE_OR_MAX &&    \
    (p)<=_CIRCUIT_PURPOSE_C_MAX)
+/** True iff the circuit_t <b>c</b> is actually an origin_circuit_t. */
 #define CIRCUIT_IS_ORIGIN(c) (CIRCUIT_PURPOSE_IS_ORIGIN((c)->purpose))
 
 /** How many circuits do we want simultaneously in-progress to handle
  * a given stream? */
 #define MIN_CIRCUITS_HANDLING_STREAM 2
 
+/* These RELAY_COMMAND constants define values for relay cell commands, and
+* must match those defined in tor-spec.txt. */
 #define RELAY_COMMAND_BEGIN 1
 #define RELAY_COMMAND_DATA 2
 #define RELAY_COMMAND_END 3
@@ -513,7 +521,7 @@
 #define RELAY_COMMAND_RENDEZVOUS_ESTABLISHED 39
 #define RELAY_COMMAND_INTRODUCE_ACK 40
 
-/* Reasons why an OR connection is closed */
+/* Reasons why an OR connection is closed. */
 #define END_OR_CONN_REASON_DONE           1
 #define END_OR_CONN_REASON_REFUSED        2 /* connection refused */
 #define END_OR_CONN_REASON_OR_IDENTITY    3
@@ -525,7 +533,7 @@
 #define END_OR_CONN_REASON_MISC           9
 
 /* Reasons why we (or a remote OR) might close a stream. See tor-spec.txt for
- * documentation of these. */
+ * documentation of these.  The values must match. */
 #define END_STREAM_REASON_MISC 1
 #define END_STREAM_REASON_RESOLVEFAILED 2
 #define END_STREAM_REASON_CONNECTREFUSED 3
@@ -897,21 +905,6 @@
                                       * before closing it? */
   unsigned int inbuf_reached_eof:1; /**< Boolean: did read() return 0 on this
                                      * conn? */
-  unsigned int edge_has_sent_end:1; /**< For debugging; only used on edge
-                         * connections.  Set once we've set the stream end,
-                         * and check in connection_about_to_close_connection().
-                         */
-  /** Edge connections only: true if we've blocked reading until the
-   * circuit has fewer queued cells. */
-  unsigned int edge_blocked_on_circ:1;
-  /** For AP connections only. If 1, and we fail to reach the chosen exit,
-   * stop requiring it. */
-  unsigned int chosen_exit_optional:1;
-  /** For AP connections only. If non-zero, this exit node was picked as
-   * a result of the TrackHostExit, and the value decrements every time
-   * we fail to complete a circuit to our chosen exit -- if it reaches
-   * zero, abandon the associated mapaddress. */
-  unsigned int chosen_exit_retries:3;
   /** Set to 1 when we're inside connection_flushed_some to keep us from
    * calling connection_handle_write() recursively. */
   unsigned int in_flushed_some:1;
@@ -1103,6 +1096,22 @@
    * itself rather than BEGIN (either via onehop or via a whole circuit). */
   unsigned int use_begindir:1;
 
+  unsigned int edge_has_sent_end:1; /**< For debugging; only used on edge
+                         * connections.  Set once we've set the stream end,
+                         * and check in connection_about_to_close_connection().
+                         */
+  /** True iff we've blocked reading until the circuit has fewer queued
+   * cells. */
+  unsigned int edge_blocked_on_circ:1;
+  /** For AP connections only. If 1, and we fail to reach the chosen exit,
+   * stop requiring it. */
+  unsigned int chosen_exit_optional:1;
+  /** For AP connections only. If non-zero, this exit node was picked as
+   * a result of the TrackHostExit, and the value decrements every time
+   * we fail to complete a circuit to our chosen exit -- if it reaches
+   * zero, abandon the associated mapaddress. */
+  unsigned int chosen_exit_retries:3;
+
   /** If this is a DNSPort connection, this field holds the pending DNS
    * request that we're going to try to answer.  */
   struct evdns_server_request *dns_server_request;
@@ -1261,7 +1270,7 @@
   SAVED_IN_JOURNAL
 } saved_location_t;
 
-/** Enumeration: what kind of downlaod schedule are we using for a given
+/** Enumeration: what kind of download schedule are we using for a given
  * object? */
 typedef enum {
   DL_SCHED_GENERIC = 0,
@@ -1319,7 +1328,8 @@
    * status, so far as we know." */
   time_t last_listed_as_valid_until;
 #ifdef TRACK_SERVED_TIME
-  /** DOCDOC */
+  /** The last time we served anybody this descriptor.  Used for internal
+   * testing to see whether we're holding on to descriptors too long. */
   time_t last_served_at; /*XXXX021 remove if not useful. */
 #endif
   /* If true, we do not ever try to save this object in the cache. */
@@ -1570,7 +1580,9 @@
   uint16_t or_port; /**< OR port of this voter */
   char *contact; /**< Contact information for this voter. */
   char vote_digest[DIGEST_LEN]; /**< Digest of this voter's vote, as signed. */
-  char legacy_id_digest[DIGEST_LEN]; /**< From vote only. DOCDOC */
+  /** Digest of this voter's "legacy" identity key, if any.  In vote only; for
+   * consensuses, we treat legacy keys as additional signers. */
+  char legacy_id_digest[DIGEST_LEN];
 
   /* Nothing from here on is signed. */
   char signing_key_digest[DIGEST_LEN]; /**< Declared digest of signing key

Modified: tor/trunk/src/or/relay.c
===================================================================
--- tor/trunk/src/or/relay.c	2008-12-17 14:59:19 UTC (rev 17642)
+++ tor/trunk/src/or/relay.c	2008-12-17 14:59:28 UTC (rev 17643)
@@ -565,7 +565,7 @@
       connection_mark_unattached_ap(fromconn, END_STREAM_REASON_INTERNAL);
     } else {
       log_info(LD_EXIT,"no circ. Closing conn.");
-      fromconn->_base.edge_has_sent_end = 1; /* no circ to send to */
+      fromconn->edge_has_sent_end = 1; /* no circ to send to */
       fromconn->end_reason = END_STREAM_REASON_INTERNAL;
       connection_mark_for_close(TO_CONN(fromconn));
     }
@@ -653,10 +653,10 @@
                                NULL)) {
           control_event_stream_status(conn, STREAM_EVENT_REMAP, 0);
         }
-        if (conn->_base.chosen_exit_optional ||
-            conn->_base.chosen_exit_retries) {
+        if (conn->chosen_exit_optional ||
+            conn->chosen_exit_retries) {
           /* stop wanting a specific exit */
-          conn->_base.chosen_exit_optional = 0;
+          conn->chosen_exit_optional = 0;
           /* A non-zero chosen_exit_retries can happen if we set a
            * TrackHostExits for this address under a port that the exit
            * relay allows, but then try the same address with a different
@@ -664,7 +664,7 @@
            * the mapping, since it is probably still wanted on the
            * original port. But now we give away to the exit relay that
            * we probably have a TrackHostExits on it. So be it. */
-          conn->_base.chosen_exit_retries = 0;
+          conn->chosen_exit_retries = 0;
           tor_free(conn->chosen_exit_name); /* clears it */
         }
         if (connection_ap_detach_retriable(conn, circ, control_reason) >= 0)
@@ -672,7 +672,7 @@
         /* else, conn will get closed below */
         break;
       case END_STREAM_REASON_CONNECTREFUSED:
-        if (!conn->_base.chosen_exit_optional)
+        if (!conn->chosen_exit_optional)
           break; /* break means it'll close, below */
         /* Else fall through: expire this circuit, clear the
          * chosen_exit_name field, and try again. */
@@ -686,9 +686,9 @@
           tor_assert(circ->_base.timestamp_dirty);
           circ->_base.timestamp_dirty -= get_options()->MaxCircuitDirtiness;
 
-          if (conn->_base.chosen_exit_optional) {
+          if (conn->chosen_exit_optional) {
             /* stop wanting a specific exit */
-            conn->_base.chosen_exit_optional = 0;
+            conn->chosen_exit_optional = 0;
             tor_free(conn->chosen_exit_name); /* clears it */
           }
           if (connection_ap_detach_retriable(conn, circ, control_reason) >= 0)
@@ -709,9 +709,9 @@
         if (exitrouter) {
           policies_set_router_exitpolicy_to_reject_all(exitrouter);
         }
-        if (conn->_base.chosen_exit_optional) {
+        if (conn->chosen_exit_optional) {
           /* stop wanting a specific exit */
-          conn->_base.chosen_exit_optional = 0;
+          conn->chosen_exit_optional = 0;
           tor_free(conn->chosen_exit_name); /* clears it */
         }
         if (connection_ap_detach_retriable(conn, circ, control_reason) >= 0)
@@ -766,7 +766,7 @@
                                                 layer_hint);
     } else {
       /* we just got an 'end', don't need to send one */
-      conn->_base.edge_has_sent_end = 1;
+      conn->edge_has_sent_end = 1;
       conn->end_reason = *(cell->payload+RELAY_HEADER_SIZE) |
                          END_STREAM_REASON_FLAG_REMOTE;
       connection_mark_for_close(TO_CONN(conn));
@@ -1016,7 +1016,7 @@
         log_warn(LD_BUG,
                  "open stream hasn't sent socks answer yet? Closing.");
       /* We just *got* an end; no reason to send one. */
-      conn->_base.edge_has_sent_end = 1;
+      conn->edge_has_sent_end = 1;
       if (!conn->end_reason)
         conn->end_reason = reason | END_STREAM_REASON_FLAG_REMOTE;
       if (!conn->_base.marked_for_close) {
@@ -1716,7 +1716,7 @@
 
   for (; edge; edge = edge->next_stream) {
     connection_t *conn = TO_CONN(edge);
-    conn->edge_blocked_on_circ = block;
+    edge->edge_blocked_on_circ = block;
 
     if (!conn->read_event) {
       /* This connection is a placeholder for something; probably a DNS



More information about the tor-commits mailing list