mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
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
This commit is contained in:
parent
a009014eb3
commit
783402f63a
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user