Browse Source

actually find the right identity_digest to blame when we get
a destroy cell from our first hop.


svn:r17991

Roger Dingledine 15 years ago
parent
commit
18ffea77ae
2 changed files with 6 additions and 6 deletions
  1. 3 4
      src/or/circuituse.c
  2. 3 2
      src/or/command.c

+ 3 - 4
src/or/circuituse.c

@@ -800,12 +800,11 @@ circuit_build_failed(origin_circuit_t *circ)
   if (circ->cpath &&
       circ->cpath->state != CPATH_STATE_OPEN) {
     /* We failed at the first hop. If there's an OR connection
-       to blame, blame it. */
-    const char *n_conn_id = circ->_base.n_hop ?
-                              circ->_base.n_hop->identity_digest : NULL;
+     * to blame, blame it. Also, avoid this relay for a while, and
+     * fail any one-hop directory fetches destined for it. */
+    const char *n_conn_id = circ->cpath->extend_info->identity_digest;
     if (circ->_base.n_conn) {
       or_connection_t *n_conn = circ->_base.n_conn;
-      if (n_conn) n_conn_id = n_conn->identity_digest;
       log_info(LD_OR,
                "Our circuit failed to get a response from the first hop "
                "(%s:%d). I'm going to try to rotate to a better connection.",

+ 3 - 2
src/or/command.c

@@ -514,8 +514,9 @@ command_process_versions_cell(var_cell_t *cell, or_connection_t *conn)
   conn->link_proto = highest_supported_version;
   conn->handshake_state->received_versions = 1;
 
-  log_info(LD_OR, "Negotiated version %d with %s; sending NETINFO.",
-           highest_supported_version, safe_str(conn->_base.address));
+  log_info(LD_OR, "Negotiated version %d with %s:%d; sending NETINFO.",
+           highest_supported_version, safe_str(conn->_base.address),
+           conn->_base.port);
   tor_assert(conn->link_proto >= 2);
 
   if (connection_or_send_netinfo(conn) < 0) {