time_t now = time(NULL);
int set_v1_dirty=0;
-#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)
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)
*/
int
dirserv_dump_directory_to_string(char **dir_out,
- crypto_pk_env_t *private_key, int complete)
+ crypto_pk_env_t *private_key)
{
char *cp;
- char *router_status;
char *identity_pkey; /* Identity key, DER64-encoded. */
char *recommended_versions;
char digest[DIGEST_LEN];
size_t buf_len;
size_t identity_pkey_len;
time_t now = time(NULL);
-#ifdef FULL_V1_DIRECTORIES
- routerlist_t *rl = router_get_routerlist();
-#else
- (void)complete;
-#endif
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) {
log_warn(LD_BUG,"write identity_pkey to string failed!");
format_iso_time(published, now);
- 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_len = 2048+strlen(recommended_versions);
+
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
"recommended-software %s\n"
"router-status %s\n"
"dir-signing-key\n%s\n",
- published, recommended_versions, router_status,
+ published, recommended_versions, "",
identity_pkey);
tor_free(recommended_versions);
- tor_free(router_status);
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;
- const char *body;
- if (!complete && !router_is_active(ri, now))
- continue;
- if (cp+len+1 >= buf+buf_len)
- goto truncated;
- body = signed_descriptor_get_body(&ri->cache_info);
- memcpy(cp, body, len);
- cp += len;
- *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
{
char *new_directory=NULL;
- if (dirserv_dump_directory_to_string(&new_directory,
- get_identity_key(), 0)) {
+ if (dirserv_dump_directory_to_string(&new_directory, get_identity_key())) {
log_warn(LD_BUG, "Error creating directory.");
tor_free(new_directory);
return NULL;
generate_runningrouters(void)
{
char *s=NULL;
- char *router_status=NULL;
char digest[DIGEST_LEN];
char published[ISO_TIME_LEN+1];
size_t len;
crypto_pk_env_t *private_key = get_identity_key();
char *identity_pkey; /* Identity key, DER64-encoded. */
size_t identity_pkey_len;
-#ifdef FULL_V1_DIRECTORIES
- routerlist_t *rl = router_get_routerlist();
-#endif
-#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!");
}
format_iso_time(published, time(NULL));
- len = 2048+strlen(router_status);
+ len = 2048;
s = tor_malloc_zero(len);
tor_snprintf(s, len,
"network-status\n"
"router-status %s\n"
"dir-signing-key\n%s"
"directory-signature %s\n",
- published, router_status, identity_pkey,
+ published, "", identity_pkey,
get_options()->Nickname);
- tor_free(router_status);
tor_free(identity_pkey);
if (router_get_runningrouters_hash(s,digest)) {
log_warn(LD_BUG,"couldn't compute digest");
return &the_runningrouters;
err:
tor_free(s);
- tor_free(router_status);
return NULL;
}