mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-22 22:25:51 +01:00
Only Tors that want to mirror the v2 directory info should
create the "cached-status" directory in their datadir. All Tors used to create it. Bugfix on 0.1.2.x. Bridge relays with DirPort set to 0 no longer cache v1 or v2 directory information; there's no point. Bugfix on trunk. svn:r12887
This commit is contained in:
parent
acd8bc1fd9
commit
f0e7c4f0da
6 changed files with 18 additions and 5 deletions
|
@ -90,6 +90,9 @@ Changes in version 0.2.0.13-alpha - 2007-12-??
|
||||||
- When we decide to send a 503 response to a request for servers, do
|
- When we decide to send a 503 response to a request for servers, do
|
||||||
not then also send the server descriptors: this defeats the whole
|
not then also send the server descriptors: this defeats the whole
|
||||||
purpose. Fixes bug 539; bugfix on 0.1.2.x.
|
purpose. Fixes bug 539; bugfix on 0.1.2.x.
|
||||||
|
- Only Tors that want to mirror the v2 directory info should
|
||||||
|
create the "cached-status" directory in their datadir. All Tors
|
||||||
|
used to create it. Bugfix on 0.1.2.x.
|
||||||
|
|
||||||
o Minor features:
|
o Minor features:
|
||||||
- On USR1, when dmalloc is in use, log the top 10 memory
|
- On USR1, when dmalloc is in use, log the top 10 memory
|
||||||
|
|
|
@ -1108,7 +1108,7 @@ options_act(or_options_t *old_options)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (running_tor) {
|
if (running_tor && directory_caches_v2_dir_info(options)) {
|
||||||
len = strlen(options->DataDirectory)+32;
|
len = strlen(options->DataDirectory)+32;
|
||||||
fn = tor_malloc(len);
|
fn = tor_malloc(len);
|
||||||
tor_snprintf(fn, len, "%s"PATH_SEPARATOR"cached-status",
|
tor_snprintf(fn, len, "%s"PATH_SEPARATOR"cached-status",
|
||||||
|
|
|
@ -1147,6 +1147,14 @@ directory_fetches_dir_info_like_bridge_user(or_options_t *options)
|
||||||
return options->UseBridges != 0;
|
return options->UseBridges != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return 1 if we want to cache v2 dir info (each status file).
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
directory_caches_v2_dir_info(or_options_t *options)
|
||||||
|
{
|
||||||
|
return options->DirPort != 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Return 1 if we want to keep descriptors, networkstatuses, etc around
|
/** Return 1 if we want to keep descriptors, networkstatuses, etc around
|
||||||
* and we're willing to serve them to others. Else return 0.
|
* and we're willing to serve them to others. Else return 0.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -495,7 +495,7 @@ add_networkstatus_to_cache(const char *s,
|
||||||
tor_free(fn);
|
tor_free(fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (directory_caches_dir_info(get_options()))
|
if (directory_caches_v2_dir_info(get_options()))
|
||||||
dirserv_set_cached_networkstatus_v2(s,
|
dirserv_set_cached_networkstatus_v2(s,
|
||||||
ns->identity_digest,
|
ns->identity_digest,
|
||||||
ns->published_on);
|
ns->published_on);
|
||||||
|
@ -540,7 +540,7 @@ router_set_networkstatus_v2(const char *s, time_t arrived_at,
|
||||||
char fp[HEX_DIGEST_LEN+1];
|
char fp[HEX_DIGEST_LEN+1];
|
||||||
char published[ISO_TIME_LEN+1];
|
char published[ISO_TIME_LEN+1];
|
||||||
|
|
||||||
if (!directory_caches_dir_info(get_options()))
|
if (!directory_caches_v2_dir_info(get_options()))
|
||||||
return 0; /* Don't bother storing it. */
|
return 0; /* Don't bother storing it. */
|
||||||
|
|
||||||
ns = networkstatus_v2_parse_from_string(s);
|
ns = networkstatus_v2_parse_from_string(s);
|
||||||
|
@ -721,7 +721,7 @@ networkstatus_v2_list_clean(time_t now)
|
||||||
unlink(fname);
|
unlink(fname);
|
||||||
}
|
}
|
||||||
tor_free(fname);
|
tor_free(fname);
|
||||||
if (directory_caches_dir_info(get_options())) {
|
if (directory_caches_v2_dir_info(get_options())) {
|
||||||
dirserv_set_cached_networkstatus_v2(NULL, ns->identity_digest, 0);
|
dirserv_set_cached_networkstatus_v2(NULL, ns->identity_digest, 0);
|
||||||
}
|
}
|
||||||
networkstatus_v2_free(ns);
|
networkstatus_v2_free(ns);
|
||||||
|
|
|
@ -3068,6 +3068,8 @@ int dirserv_dump_directory_to_string(char **dir_out,
|
||||||
int directory_fetches_from_authorities(or_options_t *options);
|
int directory_fetches_from_authorities(or_options_t *options);
|
||||||
int directory_fetches_dir_info_like_mirror(or_options_t *options);
|
int directory_fetches_dir_info_like_mirror(or_options_t *options);
|
||||||
int directory_fetches_dir_info_like_bridge_user(or_options_t *options);
|
int directory_fetches_dir_info_like_bridge_user(or_options_t *options);
|
||||||
|
int directory_caches_v2_dir_info(or_options_t *options);
|
||||||
|
#define directory_caches_v1_dir_info(o) directory_caches_v2_dir_info(o)
|
||||||
int directory_caches_dir_info(or_options_t *options);
|
int directory_caches_dir_info(or_options_t *options);
|
||||||
int directory_permits_begindir_requests(or_options_t *options);
|
int directory_permits_begindir_requests(or_options_t *options);
|
||||||
int directory_permits_controller_requests(or_options_t *options);
|
int directory_permits_controller_requests(or_options_t *options);
|
||||||
|
|
|
@ -687,7 +687,7 @@ router_parse_directory(const char *str)
|
||||||
|
|
||||||
/* Now that we know the signature is okay, and we have a
|
/* Now that we know the signature is okay, and we have a
|
||||||
* publication time, cache the directory. */
|
* publication time, cache the directory. */
|
||||||
if (directory_caches_dir_info(get_options()) &&
|
if (directory_caches_v1_dir_info(get_options()) &&
|
||||||
!authdir_mode_v1(get_options()))
|
!authdir_mode_v1(get_options()))
|
||||||
dirserv_set_cached_directory(str, published_on, 0);
|
dirserv_set_cached_directory(str, published_on, 0);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue