Przeglądaj źródła

Authorities were adding downtime for every relay every restart

Stop marking every relay as having been down for one hour every
time we restart a directory authority. These artificial downtimes
were messing with our Stable and Guard flag calculations.

Fixes bug 8218 (introduced by the fix for 1035). Bugfix on 0.2.2.23-alpha.
Roger Dingledine 11 lat temu
rodzic
commit
5d400b5f7f
2 zmienionych plików z 9 dodań i 2 usunięć
  1. 6 0
      changes/bug8218
  2. 3 2
      src/or/rephist.c

+ 6 - 0
changes/bug8218

@@ -0,0 +1,6 @@
+  o Major bugfixes:
+    - Stop marking every relay as having been down for one hour every
+      time we restart a directory authority. These artificial downtimes
+      were messing with our Stable and Guard flag calculations. Fixes
+      bug 8218 (introduced by the fix for 1035). Bugfix on 0.2.2.23-alpha.
+

+ 3 - 2
src/or/rephist.c

@@ -310,9 +310,10 @@ rep_hist_note_router_reachable(const char *id, const tor_addr_t *at_addr,
   tor_assert(hist);
   tor_assert((!at_addr && !at_port) || (at_addr && at_port));
 
-  addr_changed = at_addr &&
+  addr_changed = at_addr && !tor_addr_is_null(&hist->last_reached_addr) &&
     tor_addr_compare(at_addr, &hist->last_reached_addr, CMP_EXACT) != 0;
-  port_changed = at_port && at_port != hist->last_reached_port;
+  port_changed = at_port && hist->last_reached_port &&
+                 at_port != hist->last_reached_port;
 
   if (!started_tracking_stability)
     started_tracking_stability = time(NULL);