Commit 411c6229 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Merge commit 'bb9b4c37' into maint-0.2.4

parents 0ad8133a bb9b4c37
Loading
Loading
Loading
Loading

changes/bug11553

0 → 100644
+5 −0
Original line number Diff line number Diff line
  o Minor features:
    - When we run out of usable circuit IDs on a channel, log only one
      warning for the whole channel, and include a description of
      how many circuits there were on the channel. Fix for part of ticket
      #11553.
+2 −0
Original line number Diff line number Diff line
@@ -148,6 +148,8 @@ struct channel_s {
  ENUM_BF(circ_id_type_t) circ_id_type:2;
  /** DOCDOC*/
  unsigned wide_circ_ids:1;
  /** Have we logged a warning about circID exhaustion on this channel? */
  unsigned warned_circ_ids_exhausted:1;
  /*
   * Which circ_id do we try to use next on this connection?  This is
   * always in the range 0..1<<15-1.
+8 −1
Original line number Diff line number Diff line
@@ -127,7 +127,14 @@ get_unique_circ_id_by_chan(channel_t *chan)
      /* Make sure we don't loop forever if all circ_id's are used. This
       * matters because it's an external DoS opportunity.
       */
      log_warn(LD_CIRC,"No unused circ IDs. Failing.");
      if (! chan->warned_circ_ids_exhausted) {
        chan->warned_circ_ids_exhausted = 1;
        log_warn(LD_CIRC,"No unused circIDs found on channel %s wide "
                 "circID support, with %u inbound and %u outbound circuits. "
                 "Failing a circuit.",
                 chan->wide_circ_ids ? "with" : "without",
                 chan->num_p_circuits, chan->num_n_circuits);
      }
      return 0;
    }
    test_circ_id |= high_bit;