Commit e6590efa authored by rl1987's avatar rl1987 Committed by Nick Mathewson
Browse files

Fix get_configured_bridge_by_addr_port_digest(.,.,NULL)

The old behavior was that NULL matched only bridges without known
identities; the correct behavior is that NULL should match all
bridges (assuming that their addr:port matches).
parent 9c048d90
Loading
Loading
Loading
Loading

changes/bug9162

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Minor bugfixes:
    - Fix a get_configured_bridge_by_addr_port_digest() function so
      that it would return a bridge with given address and port even
      if bridge digest is not specified by caller.  Fixes bug 9162;
      bugfix on 0.2.0.3-alpha.  Based on a patch from "rl1987".
+3 −2
Original line number Diff line number Diff line
@@ -1657,7 +1657,8 @@ get_configured_bridge_by_orports_digest(const char *digest,

/** If we have a bridge configured whose digest matches <b>digest</b>, or a
 * bridge with no known digest whose address matches <b>addr</b>:<b>/port</b>,
 * return that bridge.  Else return NULL. */
 * return that bridge.  Else return NULL. If <b>digest</b> is NULL, check for
 * address/port matches only. */
static bridge_info_t *
get_configured_bridge_by_addr_port_digest(const tor_addr_t *addr,
                                          uint16_t port,
@@ -1667,7 +1668,7 @@ get_configured_bridge_by_addr_port_digest(const tor_addr_t *addr,
    return NULL;
  SMARTLIST_FOREACH_BEGIN(bridge_list, bridge_info_t *, bridge)
    {
      if (tor_digest_is_zero(bridge->identity) &&
      if ((tor_digest_is_zero(bridge->identity) || digest == NULL) &&
          !tor_addr_compare(&bridge->addr, addr, CMP_EXACT) &&
          bridge->port == port)
        return bridge;