Commit 2078b136 authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

Make running-routers fetch (apparently) work


svn:r2871
parent 3f341fa1
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -140,10 +140,10 @@ directory_post_to_dirservers(uint8_t purpose, const char *payload,
    });
}

/** Start a connection to a random running directory server, using
 * connection purpose 'purpose' requesting 'payload' (length
 * 'payload_len').  The purpose should be one of
 * 'DIR_PURPOSE_FETCH_DIR' or 'DIR_PURPOSE_FETCH_RENDDESC'.
/** Start a connection to a random running directory server, using connection
 * purpose 'purpose' requesting 'payload' (length 'payload_len').  The purpose
 * should be one of 'DIR_PURPOSE_FETCH_DIR' or 'DIR_PURPOSE_FETCH_RENDDESC' or
 * 'DIR_PURPOSE_FETCH_RUNNING_LIST.'
 */
void
directory_get_from_dirserver(uint8_t purpose, const char *resource)
@@ -163,6 +163,9 @@ directory_get_from_dirserver(uint8_t purpose, const char *resource)
        ds = router_pick_trusteddirserver(1, get_options()->FascistFirewall);
      }
    }
  } else if (purpose == DIR_PURPOSE_FETCH_RUNNING_LIST) {
    /* right now, running-routers isn't cached, so ask a trusted directory */
    ds = router_pick_trusteddirserver(0, get_options()->FascistFirewall);
  } else { // (purpose == DIR_PURPOSE_FETCH_RENDDESC)
    /* only ask authdirservers, any of them will do */
    /* Never use fascistfirewall; we're going via Tor. */
@@ -241,6 +244,9 @@ directory_initiate_command(const char *address, uint32_t addr,
    case DIR_PURPOSE_UPLOAD_RENDDESC:
      log_fn(LOG_DEBUG,"initiating hidden-service descriptor upload");
      break;
    case DIR_PURPOSE_FETCH_RUNNING_LIST:
      log_fn(LOG_DEBUG,"initiating running-routers fetch");
      break;
    default:
      log_fn(LOG_ERR, "Unrecognized directory connection purpose.");
      tor_assert(0);
@@ -270,7 +276,8 @@ directory_initiate_command(const char *address, uint32_t addr,
  conn->state = DIR_CONN_STATE_CONNECTING;

  if(purpose == DIR_PURPOSE_FETCH_DIR ||
     purpose == DIR_PURPOSE_UPLOAD_DIR) {
     purpose == DIR_PURPOSE_UPLOAD_DIR ||
     purpose == DIR_PURPOSE_FETCH_RUNNING_LIST) {
    /* then we want to connect directly */
    switch(connection_connect(conn, conn->address, addr, dir_port)) {
      case -1:
+2 −1
Original line number Diff line number Diff line
@@ -529,9 +529,10 @@ router_parse_runningrouters(const char *str)
  for (i=0;i<tok->n_args;++i) {
    smartlist_add(new_list->running_routers, tok->args[i]);
  }
  tok->n_args = 0; /* Don't free the elements of tok->args. */

  if (!(tok = find_first_by_keyword(tokens, K_DIRECTORY_SIGNATURE))) {
    log_fn(LOG_WARN, "Missing signature on directory");
    log_fn(LOG_WARN, "Missing signature on running-routers");
    goto err;
  }
  declared_key = find_dir_signing_key(str);