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? */
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