diff options
author | Nick Mathewson <nickm@torproject.org> | 2004-07-22 20:30:02 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2004-07-22 20:30:02 +0000 |
commit | 33fe5e362fa7365ce1274486437a68c4b33d620e (patch) | |
tree | d699fbd03c66d02b4abc8e52578eba1bce08bdc4 /src | |
parent | 0536b853fda14705f5fc2d19dc96bd2a8a90e5c3 (diff) | |
download | tor-33fe5e362fa7365ce1274486437a68c4b33d620e.tar tor-33fe5e362fa7365ce1274486437a68c4b33d620e.tar.gz |
Never use time(NULL) as assumed publication time for a directory.
svn:r2105
Diffstat (limited to 'src')
-rw-r--r-- | src/or/or.h | 3 | ||||
-rw-r--r-- | src/or/routerlist.c | 2 | ||||
-rw-r--r-- | src/or/routerparse.c | 10 |
3 files changed, 9 insertions, 6 deletions
diff --git a/src/or/or.h b/src/or/or.h index 47ff39899..ae5ae26a8 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -1415,7 +1415,8 @@ int router_get_dir_hash(const char *s, char *digest); int router_get_runningrouters_hash(const char *s, char *digest); int router_parse_list_from_string(const char **s, routerlist_t **dest, - smartlist_t *good_nickname_list); + smartlist_t *good_nickname_list, + time_t published); int router_parse_routerlist_from_directory(const char *s, routerlist_t **dest, crypto_pk_env_t *pkey); diff --git a/src/or/routerlist.c b/src/or/routerlist.c index bb6450493..bd445602a 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -561,7 +561,7 @@ int router_load_routerlist_from_string(const char *s, int trusted) { routerlist_t *new_list=NULL; - if (router_parse_list_from_string(&s, &new_list, NULL)) { + if (router_parse_list_from_string(&s, &new_list, NULL, 0)) { log(LOG_WARN, "Error parsing router file"); return -1; } diff --git a/src/or/routerparse.c b/src/or/routerparse.c index 96cf1c3de..277178f63 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -393,14 +393,15 @@ router_parse_routerlist_from_directory(const char *str, { routerinfo_t *me = router_get_my_routerinfo(); if(me) - router_update_status_from_smartlist(me, time(NULL), good_nickname_list); + router_update_status_from_smartlist(me, published_on, + good_nickname_list); } /* Read the router list from s, advancing s up past the end of the last * router. */ str = end; if (router_parse_list_from_string(&str, &new_dir, - good_nickname_list)) { + good_nickname_list, published_on)) { log_fn(LOG_WARN, "Error reading routers from directory"); goto err; } @@ -576,7 +577,8 @@ static int check_directory_signature(const char *digest, */ int router_parse_list_from_string(const char **s, routerlist_t **dest, - smartlist_t *good_nickname_list) + smartlist_t *good_nickname_list, + time_t published_on) { routerinfo_t *router; smartlist_t *routers; @@ -607,7 +609,7 @@ router_parse_list_from_string(const char **s, routerlist_t **dest, } if (good_nickname_list) { - router_update_status_from_smartlist(router, time(NULL), + router_update_status_from_smartlist(router, published_on, good_nickname_list); } else { router->is_running = 1; /* start out assuming all dirservers are up */ |