From 8efb2a957d8b7a59daae3927eed7d6bf0dde7ea2 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Sun, 27 Feb 2005 07:23:42 +0000 Subject: Make sure that router_get_by_* can always return "me" svn:r3702 --- src/or/routerlist.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/or') diff --git a/src/or/routerlist.c b/src/or/routerlist.c index d3b9ebb29..360d46d86 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -582,6 +582,9 @@ routerinfo_t *router_get_by_nickname(const char *nickname) return NULL; if (nickname[0] == '$') return router_get_by_hexdigest(nickname); + if (server_mode(get_options()) && + !strcasecmp(nickname, get_options()->Nickname)) + return router_get_my_routerinfo(); maybedigest = (strlen(nickname) == HEX_DIGEST_LEN) && (base16_decode(digest,DIGEST_LEN,nickname,HEX_DIGEST_LEN) == 0); @@ -632,6 +635,10 @@ routerinfo_t *router_get_by_digest(const char *digest) { tor_assert(digest); if (!routerlist) return NULL; + if (server_mode(get_options()) && + (router = router_get_my_routerinfo()) && + !memcmp(digest, router->identity_digest, DIGEST_LEN)) + return router; for (i=0;irouters);i++) { router = smartlist_get(routerlist->routers, i); -- cgit v1.2.3