Commit 9f884a38 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Merge branch 'maint-0.3.3'

parents 00e150a0 f15f90e2
Loading
Loading
Loading
Loading

changes/bug26121

0 → 100644
+6 −0
Original line number Diff line number Diff line
  o Minor bugfixes (controller):
    - Improve accuracy of the BUILDTIMEOUT_SET control port event's
      TIMEOUT_RATE and CLOSE_RATE fields. (We were previously miscounting
      the total number of circuits for these field values.) Fixes bug
      26121; bugfix on 0.3.3.1-alpha.
+11 −4
Original line number Diff line number Diff line
@@ -1910,13 +1910,20 @@ cbt_control_event_buildtimeout_set(const circuit_build_times_t *cbt,

  /* The timeout rate is the ratio of the timeout count over
   * the total number of circuits attempted. The total number of
   * circuits is (timeouts+succeeded+closed), since a circuit can
   * either timeout, close, or succeed. We cast the denominator
   * circuits is (timeouts+succeeded), since every circuit
   * either succeeds, or times out. "Closed" circuits are
   * MEASURE_TIMEOUT circuits whose measurement period expired.
   * All MEASURE_TIMEOUT circuits are counted in the timeouts stat
   * before transitioning to MEASURE_TIMEOUT (in
   * circuit_build_times_mark_circ_as_measurement_only()).
   * MEASURE_TIMEOUT circuits that succeed are *not* counted as
   * "succeeded". See circuit_build_times_handle_completed_hop().
   *
   * We cast the denominator
   * to promote it to double before the addition, to avoid int32
   * overflow. */
  const double total_circuits =
    ((double)cbt->num_circ_timeouts) + cbt->num_circ_succeeded
       + cbt->num_circ_closed;
    ((double)cbt->num_circ_timeouts) + cbt->num_circ_succeeded;
  if (total_circuits >= 1.0) {
    timeout_rate = cbt->num_circ_timeouts / total_circuits;
    close_rate = cbt->num_circ_closed / total_circuits;