mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
Tweak on patch to make authoritative directory servers cache
directories on disk. Make authdirservers cache *their own* directories instead of the ones they download. This gives better liveness, and marginally better resistance to broken authdirservers. Authdirservers don't cache running-routers at all: r-r isn't stored to disk, so there's no point right now. svn:r2893
This commit is contained in:
parent
39f39b0c17
commit
7a8ac5dfef
@ -807,6 +807,10 @@ static int dirserv_regenerate_directory(void)
|
||||
tor_free(new_directory);
|
||||
the_directory_is_dirty = 0;
|
||||
|
||||
/* Save the directory to disk so we re-load it quickly on startup.
|
||||
*/
|
||||
dirserv_set_cached_directory(the_directory, time(NULL), 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -891,6 +895,11 @@ static int generate_runningrouters(crypto_pk_env_t *private_key)
|
||||
return -1;
|
||||
}
|
||||
runningrouters_is_dirty = 0;
|
||||
|
||||
/* We don't cache runnning-routers to disk, so there's no point in
|
||||
* authdirservers caching it. */
|
||||
/* dirserv_set_cached_directory(the_runningrouters, time(NULL), 1); */
|
||||
|
||||
return 0;
|
||||
err:
|
||||
tor_free(s);
|
||||
|
@ -389,7 +389,8 @@ router_parse_routerlist_from_directory(const char *str,
|
||||
|
||||
/* Now that we know the signature is okay, and we have a
|
||||
* publication time, cache the directory. */
|
||||
dirserv_set_cached_directory(str, published_on, 0);
|
||||
if (!get_options()->AuthoritativeDir)
|
||||
dirserv_set_cached_directory(str, published_on, 0);
|
||||
|
||||
if (!(tok = find_first_by_keyword(tokens, K_RECOMMENDED_SOFTWARE))) {
|
||||
log_fn(LOG_WARN, "Missing recommended-software line from directory.");
|
||||
@ -515,7 +516,8 @@ router_parse_runningrouters(const char *str)
|
||||
|
||||
/* Now that we know the signature is okay, and we have a
|
||||
* publication time, cache the list. */
|
||||
dirserv_set_cached_directory(str, published_on, 1);
|
||||
if (!get_options()->AuthoritativeDir)
|
||||
dirserv_set_cached_directory(str, published_on, 1);
|
||||
|
||||
if (!(tok = find_first_by_keyword(tokens, K_ROUTER_STATUS))) {
|
||||
if (!(tok = find_first_by_keyword(tokens, K_RUNNING_ROUTERS))) {
|
||||
|
Loading…
Reference in New Issue
Block a user