Commit 5d4b5018 authored by Nick Mathewson's avatar Nick Mathewson 🤹 Committed by Andrea Shepard
Browse files

Fix bug9309, and n_noncanonical count/continue code

When we moved channel_matches_target_addr_for_extend() into a separate
function, its sense was inverted from what one might expect, and we
didn't have a ! in one place where we should have.

Found by skruffy.
parent 2920d670
Loading
Loading
Loading
Loading

changes/bug9309

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Minor bugfixes:
    - When evaluating whether to use a connection that we haven't
      decided is canonical using a recent link protocol version,
      decide that it's canonical only if it used address _does_
      match the desired address. Fixes bug 9309; bugfix on
      0.2.4.4-alpha. Reported by skruffy.
+2 −2
Original line number Diff line number Diff line
@@ -3090,7 +3090,7 @@ channel_get_for_extend(const char *digest,
    if (chan->state != CHANNEL_STATE_OPEN) {
      /* If the address matches, don't launch a new connection for this
       * circuit. */
      if (!channel_matches_target_addr_for_extend(chan, target_addr))
      if (channel_matches_target_addr_for_extend(chan, target_addr))
        ++n_inprogress_goodaddr;
      continue;
    }
@@ -4106,7 +4106,7 @@ channel_matches_extend_info(channel_t *chan, extend_info_t *extend_info)
}

/**
 * Check if a channel matches a given target address
 * Check if a channel matches a given target address; return true iff we do.
 *
 * This function calls into the lower layer and asks if this channel thinks
 * it matches a given target address for circuit extension purposes.
+2 −3
Original line number Diff line number Diff line
@@ -546,7 +546,7 @@ channel_tls_matches_extend_info_method(channel_t *chan,
}

/**
 * Check if we match a target address
 * Check if we match a target address; return true iff we do.
 *
 * This implements the matches_target method for channel_tls t_; the upper
 * layer wants to know if this channel matches a target address when extending
@@ -563,8 +563,7 @@ channel_tls_matches_target_method(channel_t *chan,
  tor_assert(target);
  tor_assert(tlschan->conn);

  return tor_addr_compare(&(tlschan->conn->real_addr),
                          target, CMP_EXACT);
  return tor_addr_eq(&(tlschan->conn->real_addr), target);
}

/**