Total bandwidth incorrectly computed - missing non-guardfraction bw
In or/dirvote.c, lines 1074-1085 we have that
if (rs->has_guardfraction) {
guardfraction_bandwidth_t guardfraction_bw;
tor_assert(is_guard);
guard_get_guardfraction_bandwidth(&guardfraction_bw,
rs->bandwidth_kb,
rs->guardfraction_percentage);
default_bandwidth = guardfraction_bw.guard_bw;
guardfraction_bandwidth = guardfraction_bw.non_guard_bw;
}
However, then in line 1093, we have
*T += default_bandwidth;
T here is the total bandwidth, for use in load balancing. I believe that it should hold that T = G+M+E+D, and it used to (in 0.2.5, before guardfractions were added). However, T now is missing the fraction of the guard bandwidth that is considered "non-guard" due to the use of guardfractions.