diff options
author | Nick Mathewson <nickm@torproject.org> | 2007-05-19 00:45:17 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2007-05-19 00:45:17 +0000 |
commit | 58d27cfc2974af6d70a1b616f29230f5cc8d6620 (patch) | |
tree | 5f9bd060a497356ff40e0fd643228cd753a53ea2 /src/or | |
parent | 61a116b3da49bb8c49e4ca05da09ef7550cf0282 (diff) | |
download | tor-58d27cfc2974af6d70a1b616f29230f5cc8d6620.tar.gz tor-58d27cfc2974af6d70a1b616f29230f5cc8d6620.zip |
r12800@catbus: nickm | 2007-05-18 20:45:15 -0400
Possible fix for bug 417 and bug 404: do not insert our routerinfo directly; instead, re-parse it first.
svn:r10217
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/or.h | 2 | ||||
-rw-r--r-- | src/or/router.c | 9 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/or/or.h b/src/or/or.h index 33aa81eb41..1f0da3265f 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3094,6 +3094,7 @@ routerinfo_t *router_find_exact_exit_enclave(const char *address, uint16_t port); #define ROUTER_REQUIRED_MIN_BANDWIDTH 10000 + #define ROUTER_MAX_DECLARED_BANDWIDTH INT32_MAX int router_is_unreliable(routerinfo_t *router, int need_uptime, int need_capacity, int need_guard); @@ -3131,7 +3132,6 @@ void extrainfo_free(extrainfo_t *extrainfo); void routerstatus_free(routerstatus_t *routerstatus); void networkstatus_free(networkstatus_t *networkstatus); void routerlist_free_all(void); -routerinfo_t *routerinfo_copy(const routerinfo_t *router); void router_set_status(const char *digest, int up); void routerlist_remove_old_routers(void); void networkstatus_list_clean(time_t now); diff --git a/src/or/router.c b/src/or/router.c index 28a801bf9e..3bd8d41f8f 100644 --- a/src/or/router.c +++ b/src/or/router.c @@ -319,6 +319,7 @@ init_keys(void) mydesc = router_get_my_descriptor(); if (authdir_mode(options)) { const char *m; + routerinfo_t *ri; /* We need to add our own fingerprint so it gets recognized. */ if (dirserv_add_own_fingerprint(options->Nickname, get_identity_key())) { log_err(LD_GENERAL,"Error adding own fingerprint to approved set"); @@ -328,7 +329,13 @@ init_keys(void) log_err(LD_GENERAL,"Error initializing descriptor."); return -1; } - if (dirserv_add_descriptor(router_get_my_routerinfo(), &m) < 0) { + ri = router_parse_entry_from_string(mydesc, NULL, 1); + if (!ri) { + log_err(LD_GENERAL,"Generated a routerinfo we couldn't parse."); + return -1; + } + if (dirserv_add_descriptor(ri, &m) + < 0) { log_err(LD_GENERAL,"Unable to add own descriptor to directory: %s", m?m:"<unknown error>"); return -1; |