mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Clean up last patch; implement (mostly) proper handling for verified/unverified name collisions.
svn:r2248
This commit is contained in:
+1
-1
@@ -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? */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user