Browse Source

document picking infinity bin

George Kadianakis 6 years ago
parent
commit
71c11d7306
2 changed files with 10 additions and 0 deletions
  1. 4 0
      src/core/or/circuitpadding.c
  2. 6 0
      src/core/or/circuitpadding.h

+ 4 - 0
src/core/or/circuitpadding.c

@@ -224,6 +224,10 @@ circpad_machine_current_state(const circpad_machine_state_t *mi)
 /**
 /**
  * Get the lower bound of a histogram bin. The upper bound is obtained by
  * Get the lower bound of a histogram bin. The upper bound is obtained by
  * calling this function with bin+1, and subtracting 1.
  * calling this function with bin+1, and subtracting 1.
+ *
+ * This function can also be called with 'bin' set to a value equal or greater
+ * than histogram_len in which case the infinity bin is chosen and
+ * CIRCPAD_DELAY_INFINITE is returned.
  */
  */
 STATIC circpad_delay_t
 STATIC circpad_delay_t
 circpad_histogram_bin_to_usec(const circpad_machine_state_t *mi,
 circpad_histogram_bin_to_usec(const circpad_machine_state_t *mi,

+ 6 - 0
src/core/or/circuitpadding.h

@@ -276,6 +276,12 @@ typedef struct circpad_state_t {
    *    histogram[] =        {   6,  10,   6,  7,    9,     6 }
    *    histogram[] =        {   6,  10,   6,  7,    9,     6 }
    *    histogram_edges[] =  { 0, 100, 200, 350, 500, 1000 }
    *    histogram_edges[] =  { 0, 100, 200, 350, 500, 1000 }
    *
    *
+   * The final bin is called the "infinity bin" and if it's chosen we don't
+   * schedule any padding. The infinity bin is strange because its lower edge
+   * is the max value of possible non-infinite delay allowed by this histogram,
+   * and its upper edge is CIRCPAD_DELAY_INFINITE. You can tell if the infinity
+   * bin is chosen by inspecting its bin index or inspecting its upper edge.
+   *
    * If a delay probability distribution is used for this state, this is set
    * If a delay probability distribution is used for this state, this is set
    * to 0. */
    * to 0. */
   circpad_hist_index_t histogram_len;
   circpad_hist_index_t histogram_len;