diff options
author | Nick Mathewson <nickm@torproject.org> | 2007-10-12 21:33:37 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2007-10-12 21:33:37 +0000 |
commit | 783402f63a38ab02acbb9321ca54ef9bd2f43f22 (patch) | |
tree | cdb57c12d92612559a9083af86fb263dc8df484e /src/or | |
parent | a009014eb35bd679dab2c3087285e1734e5772e4 (diff) | |
download | tor-783402f63a38ab02acbb9321ca54ef9bd2f43f22.tar tor-783402f63a38ab02acbb9321ca54ef9bd2f43f22.tar.gz |
r15731@catbus: nickm | 2007-10-12 17:27:48 -0400
Move "sort a list of routerinfo_t" into its own function in routerlist.c
svn:r11903
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/dirserv.c | 19 | ||||
-rw-r--r-- | src/or/routerlist.c | 18 |
2 files changed, 23 insertions, 14 deletions
diff --git a/src/or/dirserv.c b/src/or/dirserv.c index d2e0d5e42..addb3f4fc 100644 --- a/src/or/dirserv.c +++ b/src/or/dirserv.c @@ -1695,17 +1695,6 @@ routerstatus_format_entry(char *buf, size_t buf_len, return 0; } -/** Helper for sorting: compare two routerinfos by their identity - * digest. */ -static int -_compare_routerinfo_by_id_digest(const void **a, const void **b) -{ - routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b; - return memcmp(first->cache_info.identity_digest, - second->cache_info.identity_digest, - DIGEST_LEN); -} - /** Helper for sorting: compares two routerinfos first by address, and then by * descending order of "usefulness". (An authority is more useful than a * non-authority; a running router is more useful than a non-running router; @@ -1754,7 +1743,9 @@ _compare_routerinfo_by_ip_and_bw(const void **a, const void **b) /* They're equal! Compare by identity digest, so there's a * deterministic order and we avoid flapping. */ - return _compare_routerinfo_by_id_digest(a, b); + return memcmp(first->cache_info.identity_digest, + second->cache_info.identity_digest, + DIGEST_LEN); } /** Given a list of routerinfo_t in <b>routers</b>, return a new digestmap_t @@ -1913,7 +1904,7 @@ generate_networkstatus_vote_obj(crypto_pk_env_t *private_key, routers = smartlist_create(); smartlist_add_all(routers, rl->routers); - smartlist_sort(routers, _compare_routerinfo_by_id_digest); + routers_sort_by_identity(routers); omit_as_sybil = get_possible_sybil_list(routers); routerstatuses = smartlist_create(); @@ -2337,7 +2328,7 @@ generate_networkstatus_opinion(int v2) routers = smartlist_create(); smartlist_add_all(routers, rl->routers); - smartlist_sort(routers, _compare_routerinfo_by_id_digest); + routers_sort_by_identity(routers); omit_as_sybil = get_possible_sybil_list(routers); diff --git a/src/or/routerlist.c b/src/or/routerlist.c index c974adb0f..d4e692cad 100644 --- a/src/or/routerlist.c +++ b/src/or/routerlist.c @@ -4403,3 +4403,21 @@ esc_router_info(routerinfo_t *router) return info; } +/** Helper for sorting: compare two routerinfos by their identity + * digest. */ +static int +_compare_routerinfo_by_id_digest(const void **a, const void **b) +{ + routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b; + return memcmp(first->cache_info.identity_digest, + second->cache_info.identity_digest, + DIGEST_LEN); +} + +/** Sort a list of routerinfo_t in ascending order of identity digest. */ +void +routers_sort_by_identity(smartlist_t *routers) +{ + smartlist_sort(routers, _compare_routerinfo_by_id_digest); +} + |