diff options
author | Nick Mathewson <nickm@torproject.org> | 2004-11-15 16:17:59 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2004-11-15 16:17:59 +0000 |
commit | 7a8ac5dfef401fa26e37dcfd2b2a8ccb4285613b (patch) | |
tree | 03bd4754f9dfc882aeaf49fa3608ec6d7b1d9292 /src/or | |
parent | 39f39b0c17cd1d7677d762529476b82f12b6c6a3 (diff) | |
download | tor-7a8ac5dfef401fa26e37dcfd2b2a8ccb4285613b.tar tor-7a8ac5dfef401fa26e37dcfd2b2a8ccb4285613b.tar.gz |
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
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/dirserv.c | 9 | ||||
-rw-r--r-- | src/or/routerparse.c | 6 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/or/dirserv.c b/src/or/dirserv.c index f2946f908..e96adc0a7 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -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); diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 5c2cd28f8..ca7d6ed5d 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -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))) { |