[tor-bugs] #20218 [Core Tor/Tor]: Fix and refactor and redocument routerstatus_has_changed

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri Jan 26 11:22:42 UTC 2018

#20218: Fix and refactor and redocument routerstatus_has_changed
 Reporter:  nickm                                |          Owner:  (none)
     Type:  defect                               |         Status:
                                                 |  needs_revision
 Priority:  Medium                               |      Milestone:  Tor:
                                                 |  0.3.4.x-final
Component:  Core Tor/Tor                         |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  ipv6, 029-proposed, tor-control,     |  Actual Points:
  easy, spec-conformance                         |
Parent ID:                                       |         Points:  .1
 Reviewer:                                       |        Sponsor:
Changes (by teor):

 * keywords:  029-proposed, tor-control, easy, spec-conformance => ipv6,
     029-proposed, tor-control, easy, spec-conformance
 * status:  new => needs_revision
 * milestone:  Tor: unspecified => Tor: 0.3.4.x-final


 Oh, I'm sorry, I've been giving you bad advice. I must have searched for
 the wrong function name.

 We don't need a new function. We need to change the existing function to
 look at more fields.

 Here's what we need to do:

 The routerstatus_t struct has a lot of fields. routerstatus_has_changed()
 checks a few of them. But it needs to check every field that is output by

 These missing fields can be compared using !=:
 * published
 * ipv6_orport
 * is_v2_dir
 * bandwidth_kb

 This missing field must be compared using tor_addr_compare(..., ...,
 * ipv6_addr

 We don't need to worry about the summarised IPv4 exit policy output by
 networkstatus_getinfo_helper_single(). The descriptor_digest check will
 find changes in this field.

 Then we need to add comments to routerstatus_has_changed() saying that it
 checks for changes that are output by the control port. And we need to add
 a comment to routerstatus_format_entry() saying that any extra control
 port fields need to be added to routerstatus_has_changed() as well.

Ticket URL: <https://trac.torproject.org/projects/tor/ticket/20218#comment:20>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online

More information about the tor-bugs mailing list