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

Fix smartlist_choose_node_by_bandwidth() so that it rejects ORs with BadExit flag.

parent 2c884fd8
Loading
Loading
Loading
Loading

changes/bug13066

0 → 100644
+4 −0
Original line number Diff line number Diff line
  o Minor bugfixes:
    - Fix node selection logic in smartlist_choose_node_by_bandwidth()
      so that onion routers with BadExit flag are not considered to be
      worthy candidates. Fixes issue 13066.
+8 −0
Original line number Diff line number Diff line
@@ -3228,6 +3228,14 @@ static const or_circuit_t *CONST_TO_OR_CIRCUIT(const circuit_t *);
static origin_circuit_t *TO_ORIGIN_CIRCUIT(circuit_t *);
static const origin_circuit_t *CONST_TO_ORIGIN_CIRCUIT(const circuit_t *);

/** Return 1 iff <b>node</b> has Exit flag and no BadExit flag.
 * Otherwise, return 0.
 */
static INLINE int node_is_good_exit(const node_t *node)
{
  return node->is_exit && ! node->is_bad_exit;
}

static INLINE or_circuit_t *TO_OR_CIRCUIT(circuit_t *x)
{
  tor_assert(x->magic == OR_CIRCUIT_MAGIC);
+1 −1
Original line number Diff line number Diff line
@@ -2202,7 +2202,7 @@ smartlist_choose_node_by_bandwidth(const smartlist_t *sl,
    uint32_t this_bw = 0;
    i = node_sl_idx;

    is_exit = node->is_exit;
    is_exit = node_is_good_exit(node);
    is_guard = node->is_possible_guard;
    if (node->rs) {
      if (node->rs->has_bandwidth) {