Clean up last patch; implement (mostly) proper handling for verified/unverified name collisions.

svn:r2248
This commit is contained in:
Nick Mathewson
2004-08-17 06:06:05 +00:00
parent 3eaa6b198a
commit 606a71d714
3 changed files with 18 additions and 2 deletions
+1 -1
View File
@@ -588,7 +588,7 @@ typedef struct {
uint32_t bandwidthcapacity;
struct exit_policy_t *exit_policy; /**< What streams will this OR permit
* to exit? */
int uptime; /**< How many seconds the router claims to have been up */
long uptime; /**< How many seconds the router claims to have been up */
/* local info */
int is_running; /**< As far as we know, is this OR currently running? */
time_t status_set_at; /**< When did we last update is_running? */
+17
View File
@@ -565,6 +565,23 @@ int router_add_to_routerlist(routerinfo_t *router) {
routerinfo_free(router);
return -1;
}
} else if (!strcmp(router->nickname, r->nickname)) {
/* nicknames match, keys don't. */
if (router->is_verified) {
/* The new verified router replaces the old one; remove the
* old one. and carry on to the end of the list, in case
* there are more old unverifed routers with this nickname
*/
routerinfo_free(r);
smartlist_del_keeporder(routerlist->routers, i--);
/* XXXX What do we do about any connections using the old key? */
} else if (r->is_verified) {
/* Can't replace a verified router with an unverified one. */
log_fn(LOG_DEBUG, "Skipping unverified entry for verified router '%s'",
router->nickname);
routerinfo_free(router);
return -1;
}
}
}
/* We haven't seen a router with this name before. Add it to the end of
-1
View File
@@ -644,7 +644,6 @@ routerinfo_t *router_parse_entry_from_string(const char *s,
smartlist_t *tokens = NULL, *exit_policy_tokens = NULL;
directory_token_t *tok;
int t;
long lng;
int ports_set, bw_set;
if (!end) {