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
This commit is contained in:
Nick Mathewson 2007-05-19 00:45:17 +00:00
parent 61a116b3da
commit 58d27cfc29
2 changed files with 9 additions and 2 deletions

View File

@ -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);

View File

@ -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;