Commit b02407ef authored by David Goulet's avatar David Goulet 🐼
Browse files

Merge branch 'maint-0.4.7' into release-0.4.7

parents c1df5882 33358293
Loading
Loading
Loading
Loading

changes/bug40805

0 → 100644
+7 −0
Original line number Diff line number Diff line
  o Major bugfixes (vanguards):
    - Rotate to a new L2 vanguard whenever an existing one loses the
      Stable or Fast flag. Previously, we would leave these relays in the
      L2 vanguard list but never use them, and if all of our vanguards
      end up like this we wouldn't have any middle nodes left to choose
      from so we would fail to make onion-related circuits. Fixes bug
      40805; bugfix on 0.4.7.1-alpha.
+5 −2
Original line number Diff line number Diff line
@@ -150,6 +150,7 @@
#include "feature/nodelist/node_st.h"
#include "core/or/origin_circuit_st.h"
#include "app/config/or_state_st.h"
#include "src/feature/nodelist/routerstatus_st.h"

/** A list of existing guard selection contexts. */
static smartlist_t *guard_contexts = NULL;
@@ -4115,8 +4116,10 @@ maintain_layer2_guards(void)
    }

    /* Expire if relay has left consensus */
    if (router_get_consensus_status_by_id(g->identity) == NULL) {
      log_info(LD_GENERAL, "Removing missing Layer2 guard %s",
    const routerstatus_t *rs = router_get_consensus_status_by_id(g->identity);
    if (rs == NULL || !rs->is_stable || !rs->is_fast) {
      log_info(LD_GENERAL, "Removing %s Layer2 guard %s",
               rs ? "unsuitable" : "missing",
               safe_str_client(hex_str(g->identity, DIGEST_LEN)));
      // Nickname may be gone from consensus and doesn't matter anyway
      control_event_guard("None", g->identity, "BAD_L2");