Commit 92496a73 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Also cache the protover summary in the routerinfo_t, if we're using that

parent 7792be2d
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2299,6 +2299,9 @@ typedef struct {
   * this routerinfo. Used only during voting. */
  unsigned int omit_from_vote:1;

  /** Flags to summarize the protocol versions for this routerinfo_t. */
  protover_summary_flags_t pv;

/** Tor can use this router for general positions in circuits; we got it
 * from a directory server as usual, or we're an authority and a server
 * uploaded it. */
+16 −5
Original line number Diff line number Diff line
@@ -379,6 +379,10 @@ static int check_signature_token(const char *digest,
                                 int flags,
                                 const char *doctype);

static void summarize_protover_flags(protover_summary_flags_t *out,
                                     const char *protocols,
                                     const char *version);

#undef DEBUG_AREA_ALLOC

#ifdef DEBUG_AREA_ALLOC
@@ -1895,12 +1899,19 @@ router_parse_entry_from_string(const char *s, const char *end,
    }
  }

  {
    const char *version = NULL, *protocols = NULL;
    if ((tok = find_opt_by_keyword(tokens, K_PLATFORM))) {
      router->platform = tor_strdup(tok->args[0]);
      version = tok->args[0];
    }

    if ((tok = find_opt_by_keyword(tokens, K_PROTO))) {
      router->protocol_list = tor_strdup(tok->args[0]);
      protocols = tok->args[0];
    }

    summarize_protover_flags(&router->pv, protocols, version);
  }

  if ((tok = find_opt_by_keyword(tokens, K_CONTACT))) {