Commit 1b7a704c authored by Nick Mathewson's avatar Nick Mathewson 🤹
Browse files

r13901@catbus: nickm | 2007-07-25 16:23:51 -0400

 Make all code to generate v1 directories into conditional code.


svn:r10926
parent 83fa8436
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -30,8 +30,7 @@ const char directory_c_id[] =
 * - connection_dir_finished_connecting(), called from
 *   connection_finished_connecting() in connection.c
 */
static void
directory_send_command(dir_connection_t *conn,
static void directory_send_command(dir_connection_t *conn,
                       int purpose, int direct, const char *resource,
                       const char *payload, size_t payload_len);
static int directory_handle_command(dir_connection_t *conn);
+33 −6
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ const char dirserv_c_id[] =
 * \file dirserv.c
 * \brief Directory server core implementation. Manages directory
 * contents and generates directories.
 **/
 */

/** How far in the future do we allow a router to get? (seconds) */
#define ROUTER_ALLOW_SKEW (60*60*12)
@@ -772,11 +772,26 @@ void
directory_set_dirty(void)
{
  time_t now = time(NULL);

  int set_v1_dirty;

#ifdef FULL_V1_DIRECTORIES
  set_v1_dirty = 1;
#else
  /* Regenerate stubs only every 8 hours. XXXX020 */
#define STUB_REGENERATE_INTERVAL (8*60*60)
  if (!the_directory || !the_runningrouters.dir)
    set_v1_dirty = 1;
  else if (the_directory->published < now - STUB_REGENERATE_INTERVAL ||
           the_runningrouters.published < now - STUB_REGENERATE_INTERVAL)
    set_v1_dirty = 1;
#endif

  if (set_v1_dirty) {
    if (!the_directory_is_dirty)
      the_directory_is_dirty = now;
    if (!runningrouters_is_dirty)
      runningrouters_is_dirty = now;
  }
  if (!the_v2_networkstatus_is_dirty)
    the_v2_networkstatus_is_dirty = now;
}
@@ -953,8 +968,12 @@ dirserv_dump_directory_to_string(char **dir_out,
  tor_assert(dir_out);
  *dir_out = NULL;

#ifdef FULL_V1_DIRECTORIES
  if (list_server_status(rl->routers, &router_status, 0))
    return -1;
#else
  router_status = tor_strdup("");
#endif

  if (crypto_pk_write_public_key_to_string(private_key,&identity_pkey,
                                           &identity_pkey_len)<0) {
@@ -969,9 +988,11 @@ dirserv_dump_directory_to_string(char **dir_out,

  buf_len = 2048+strlen(recommended_versions)+
    strlen(router_status);
#ifdef FULL_V1_DIRECTORIES
  SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri,
                    if (complete || router_is_active(ri, now))
                      buf_len += ri->cache_info.signed_descriptor_len+1);
#endif
  buf = tor_malloc(buf_len);
  /* We'll be comparing against buf_len throughout the rest of the
     function, though strictly speaking we shouldn't be able to exceed
@@ -992,6 +1013,7 @@ dirserv_dump_directory_to_string(char **dir_out,
  tor_free(identity_pkey);

  cp = buf + strlen(buf);
#ifdef FULL_V1_DIRECTORIES
  SMARTLIST_FOREACH(rl->routers, routerinfo_t *, ri,
    {
      size_t len = ri->cache_info.signed_descriptor_len;
@@ -1006,6 +1028,7 @@ dirserv_dump_directory_to_string(char **dir_out,
      *cp++ = '\n'; /* add an extra newline in case somebody was depending on
                     * it. */
    });
#endif
  *cp = '\0';

  /* These multiple strlcat calls are inefficient, but dwarfed by the RSA
@@ -1360,9 +1383,13 @@ generate_runningrouters(void)
  size_t identity_pkey_len;
  routerlist_t *rl = router_get_routerlist();

#ifdef FULL_V1_DIRECTORIES
  if (list_server_status(rl->routers, &router_status, 0)) {
    goto err;
  }
#else
  router_status = tor_strdup("");
#endif
  if (crypto_pk_write_public_key_to_string(private_key,&identity_pkey,
                                           &identity_pkey_len)<0) {
    log_warn(LD_BUG,"write identity_pkey to string failed!");
+4 −0
Original line number Diff line number Diff line
@@ -954,7 +954,11 @@ run_scheduled_events(time_t now)
                                   ROUTER_PURPOSE_GENERAL, NULL, 1);
    }
/** How often do we (as a cache) fetch a new V1 runningrouters document? */
#ifdef FULL_V1_DIRECTORIES
#define V1_RUNNINGROUTERS_FETCH_PERIOD (30*60)
#else
#define V1_RUNNINGROUTERS_FETCH_PERIOD (6*60*60)
#endif
    time_to_fetch_running_routers = now + V1_RUNNINGROUTERS_FETCH_PERIOD;

     /* Also, take this chance to remove old information from rephist
+3 −0
Original line number Diff line number Diff line
@@ -154,6 +154,9 @@
#define cell_t tor_cell_t
#endif

/** Undefine this when it's time to stop generating v1 directories. */
#define FULL_V1_DIRECTORIES

/** Length of longest allowable configured nickname. */
#define MAX_NICKNAME_LEN 19
/** Length of a router identity encoded as a hexadecimal digest, plus