o Minor bugfixes:
- - On SIGHUP, do not clear out all TrackExitHost mappings, client DNS
+ - On SIGHUP, do not clear out all TrackHostExits mappings, client DNS
cache entries, and virtual address mappings: that's what NEWNYM is
for. Bugfix on Tor 0.1.0.1-rc; fixes bug 1345.
+ - When TrackHostExits is changed from a controller, remove any
+ mappings for hosts that should no longer have their exits tracked.
+ Bugfix on Tor 0.1.0.1-rc.
/* Check for transitions that need action. */
if (old_options) {
+ int revise_trackexithosts = 0;
if ((options->UseEntryGuards && !old_options->UseEntryGuards) ||
!routerset_equal(old_options->ExcludeNodes,options->ExcludeNodes) ||
!routerset_equal(old_options->ExcludeExitNodes,
"excluded node lists. Abandoning previous circuits.");
circuit_mark_all_unused_circs();
circuit_expire_all_dirty_circs();
- addressmap_clear_excluded_trackexithosts(options);
+ revise_trackexithosts = 1;
}
+ if (!smartlist_strings_eq(old_options->TrackHostExits,
+ options->TrackHostExits))
+ revise_trackexithosts = 1;
+
+ if (revise_trackexithosts)
+ addressmap_clear_excluded_trackexithosts(options);
+
/* How long should we delay counting bridge stats after becoming a bridge?
* We use this so we don't count people who used our bridge thinking it is
* a relay. If you change this, don't forget to change the log message
}
/** Remove all TRACKEXIT mappings from the addressmap for which the target
- * host is unknown or no longer allowed. */
+ * host is unknown or no longer allowed, or for which the source address
+ * is no longer in trackexithosts. */
void
addressmap_clear_excluded_trackexithosts(or_options_t *options)
{
tor_free(nodename);
if (!ri ||
(allow_nodes && !routerset_contains_router(allow_nodes, ri)) ||
- routerset_contains_router(exclude_nodes, ri)) {
+ routerset_contains_router(exclude_nodes, ri) ||
+ !hostname_in_track_host_exits(options, address)) {
/* We don't know this one, or we want to be rid of it. */
addressmap_ent_remove(address, ent);
MAP_DEL_CURRENT(address);