Commit f42f04c8 authored by Roger Dingledine's avatar Roger Dingledine
Browse files

cleanups on 008pre1 items


svn:r1993
parent 29818d5b
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -80,6 +80,9 @@ void
directory_get_from_dirserver(uint8_t purpose, const char *payload,
                             int payload_len)
{
  /* FFFF we might pass pick_directory_server a boolean to prefer
   * picking myself for some purposes, or prefer picking not myself
   * for other purposes. */
  directory_initiate_command(router_pick_directory_server(),
                             purpose, payload, payload_len);
}
@@ -498,6 +501,10 @@ directory_handle_command_get(connection_t *conn, char *headers,

  if(!strcmp(url,"/running-routers")) { /* running-routers fetch */
    dlen = dirserv_get_runningrouters(&cp);
    if(dlen < 0) { /* we failed to create cp */
      connection_write_to_buf(answer503, strlen(answer503), conn);
      return 0;
    }

    snprintf(tmp, sizeof(tmp), "HTTP/1.0 200 OK\r\nContent-Length: %d\r\nContent-Type: text/plain\r\n\r\n",
             (int)dlen);
+3 −3
Original line number Diff line number Diff line
@@ -455,6 +455,7 @@ list_running_servers(char **nicknames_out)
      continue; /* only list successfully handshaked OR's. */
    if(!conn->nickname) /* it's an OP, don't list it */
      continue;
    /* XXX008 need to change this to list "!nickname" for down routers */
    if (!router_nickname_is_approved(conn->nickname))
      continue; /* If we removed them from the approved list, don't list it.*/
    smartlist_add(nicknames, conn->nickname);
@@ -580,7 +581,7 @@ dirserv_dump_directory_to_string(char *s, unsigned int maxlen,
/** Most recently generated encoded signed directory. */
static char *the_directory = NULL;
static int the_directory_len = -1;
static char *cached_directory = NULL;
static char *cached_directory = NULL; /* used only by non-auth dirservers */
static time_t cached_directory_published = 0;
static int cached_directory_len = -1;

@@ -588,8 +589,7 @@ void dirserv_set_cached_directory(const char *directory, time_t when)
{
  time_t now;
  char filename[512];
  if (!options.AuthoritativeDir)
    return;
  tor_assert(!options.AuthoritativeDir);
  now = time(NULL);
  if (when>cached_directory_published &&
      when<now+ROUTER_ALLOW_SKEW) {
+3 −7
Original line number Diff line number Diff line
@@ -451,18 +451,14 @@ static void run_scheduled_events(time_t now) {
      router_rebuild_descriptor();
      router_upload_dir_desc_to_dirservers();
    }
    if(!options.DirPort || !options.AuthoritativeDir) {
      /* XXXX should directories do this next part too? */
    routerlist_remove_old_routers(); /* purge obsolete entries */
      directory_get_from_dirserver(DIR_PURPOSE_FETCH_DIR, NULL, 0);
    } else {
    if(options.AuthoritativeDir) {
      /* We're a directory; dump any old descriptors. */
      dirserv_remove_old_servers();
      /* dirservers try to reconnect too, in case connections have failed */
      router_retry_connections();
      /* fetch another directory, in case it knows something we don't */
      directory_get_from_dirserver(DIR_PURPOSE_FETCH_DIR, NULL, 0);
    }
    directory_get_from_dirserver(DIR_PURPOSE_FETCH_DIR, NULL, 0);
    /* Force an upload of our descriptors every DirFetchPostPeriod seconds. */
    rend_services_upload(1);
    last_uploaded_services = now;
+9 −7
Original line number Diff line number Diff line
@@ -285,14 +285,16 @@ int init_keys(void) {
  if(!cp) {
    log_fn(LOG_INFO,"Cached directory %s not present. Ok.",keydir);
  } else {
    if(options.AuthoritativeDir && dirserv_load_from_directory_string(cp) < 0){
    if(options.AuthoritativeDir)
      if(dirserv_load_from_directory_string(cp) < 0){
        log_fn(LOG_ERR, "Cached directory %s is corrupt", keydir);
        tor_free(cp);
        return -1;
      }
    /* set time to 1 so it will be replaced on first download.
     */
    } else {
      /* set time to 1 so it will be replaced on first download. */
      dirserv_set_cached_directory(cp, 1);
    }
    tor_free(cp);
  }
  /* success */
+12 −9
Original line number Diff line number Diff line
@@ -477,11 +477,13 @@ int router_load_routerlist_from_directory(const char *s,
    log_fn(LOG_WARN, "Error resolving routerlist");
    return -1;
  }
  /* Remember the directory, if we're nonauthoritative.*/
  dirserv_set_cached_directory(s, routerlist->published_on);
  /* Learn about the descriptors in the directory, if we're authoritative */
  if (options.AuthoritativeDir)
  if (options.AuthoritativeDir) {
    /* Learn about the descriptors in the directory. */
    dirserv_load_from_directory_string(s);
  } else {
    /* Remember the directory. */
    dirserv_set_cached_directory(s, routerlist->published_on);
  }
  return 0;
}

@@ -657,16 +659,17 @@ void routerlist_update_from_runningrouters(routerlist_t *list,
    router = smartlist_get(list->routers, i);
    for (j=0; j<n_names; ++j) {
      name = smartlist_get(rr->running_routers, j);
      if (!strcmp(name, router->nickname)) {
        running=1;
      if (!strcasecmp(name, router->nickname)) {
        router->is_running = 1;
        break;
      }
      if (*name == '!' && strcasecmp(name+1, router->nickname)) {
        router->is_running = 0;
        break;
      }
    }
    router->is_running = 1; /* arma: is this correct? */
  }
  list->running_routers_updated_on = rr->published_on;
  /* XXXX008 Should there also be a list of which are down, so that we
   * don't mark merely unknown routers as down? */
}

/*