Changes between Initial Version and Version 8 of Ticket #1094

Jul 10, 2010, 2:43:57 AM (10 years ago)

velope from IRC rightly points out that this behavior is counterintuitive, and users rarely want to name '??' explicitly:

03:04 < velope> if the user wants to exclude a country badly enough to use the torrc option, the last thing he wants is for tor to use a node in that country just because geoip is incomplete or defective. 03:57 < nickm> Hm. So you think that nodes in Nowhere should count as belonging to every country for Exclude*Nodes, but count as belonging to no country for ExitNodes ? 03:57 < nickm> Seems plausible to me

To expand: This interpretation seems plausible to me because if you want to exclude *any* country, there's no way to tell whether an unknown-country router is there or not... and if you want to include only certain countries, there's no way to tell whether an unknown-country belongs to any of them.

This wouldn't be so hard to implement, in fact. We would just add a flag to each routerstatus_t when we created it to indicate whether unknown-country nodes should be considered members of *every* country (as for ExcludeNodes) or whether they should be considered members of *no* country (as for ExitNodes). This flag could be passed in as part of routerset_new(), and it would only need to be interpreted, I think, in routerset_contains().

This might even be a good newbie project; the code changes are small and isolated to:

  • struct routerset_t
  • routerset_new()
  • everywhere that calls routerset_new()
  • routerset_contains()


  • Ticket #1094

    • Property Status changed from new to assigned
    • Property Owner set to nickm
    • Property Milestone changed from to Tor: 0.2.2.x-final