[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-bugs] #12752 [Stem]: stem: Microdescript bandwidth considered unmeasured by default
#12752: stem: Microdescript bandwidth considered unmeasured by default
--------------------+------------------------
Reporter: asn | Owner: atagar
Type: defect | Status: new
Priority: normal | Milestone:
Component: Stem | Version:
Keywords: | Actual Points:
Parent ID: | Points:
--------------------+------------------------
Reading
https://stem.torproject.org/api/descriptor/router_status_entry.html#stem.descriptor.router_status_entry.RouterStatusEntryMicroV3
gave me the impression that `measured` would contain the bandwidth
referenced in microdescriptor consensuses (since AFAIK the bandwidth in
consensuses is '''measured'''), however it seems that stem puts the
bandwidth in `bandwidth` (considering it unmeasured):
The code of stem is here:
{{{
if w_key == "Bandwidth":
if not (w_value and w_value.isdigit()):
if not validate:
return
raise ValueError("%s 'Bandwidth=' entry needs to have a numeric
value: w %s" % (desc._name(), value))
desc.bandwidth = int(w_value)
elif w_key == "Measured":
if not (w_value and w_value.isdigit()):
if not validate:
return
raise ValueError("%s 'Measured=' entry needs to have a numeric
value: w %s" % (desc._name(), value))
desc.measured = int(w_value)
elif w_key == "Unmeasured":
if validate and w_value != "1":
raise ValueError("%s 'Unmeasured=' should only have the value of
'1': w %s" % (desc._name(), value))
desc.is_unmeasured = True
else:
desc.unrecognized_bandwidth_entries.append(w_entry)
}}}
which basically saves stuff to `bandwidth` except if an explicit
`Measured` appears which makes it save to `measured`. OTOH, Tor assumes
measured by default, and only adds the `Unmeasured` string if it's not:
{{{
/* Now the weight line. */
if (rs_out.has_bandwidth) {
int unmeasured = rs_out.bw_is_unmeasured &&
consensus_method >= MIN_METHOD_TO_CLIP_UNMEASURED_BW;
smartlist_add_asprintf(chunks, "w Bandwidth=%d%s\n",
rs_out.bandwidth_kb,
unmeasured?" Unmeasured=1":"");
}
}}}
I think the correct fix here is to assume that microdedescriptor bandwidth
is `measured`, except if the `Unmeasured=1` string is present.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/12752>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs