mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
r13982@catbus: nickm | 2007-07-29 01:31:53 -0400
Actually, we missed a rule about what routers to prefer: first prefer authority to non-authority, *then* running, *then* bandwidth. svn:r10969
This commit is contained in:
parent
1b665b3c7e
commit
9031bbd4d8
@ -482,11 +482,11 @@ $Id$
|
|||||||
Directory server administrators may label some servers or IPs as
|
Directory server administrators may label some servers or IPs as
|
||||||
blacklisted, and elect not to include them in their network-status lists.
|
blacklisted, and elect not to include them in their network-status lists.
|
||||||
|
|
||||||
Authorities SHOULD 'disable' any servers in excess of 3 on any single
|
Authorities SHOULD 'disable' any servers in excess of 3 on any single IP.
|
||||||
IP. When there are more than 3 to choose from, authorities should first
|
When there are more than 3 to choose from, authorities should first prefer
|
||||||
prefer Running to non-Running, and then prefer high-bandwidth to
|
authorities to non-authorities, then prefer Running to non-Running, and
|
||||||
low-bandwidth. To 'disable' a server, the authority *should* advertise
|
then prefer high-bandwidth to low-bandwidth. To 'disable' a server, the
|
||||||
it without the Running or Valid flag.
|
authority *should* advertise it without the Running or Valid flag.
|
||||||
|
|
||||||
Thus, the network-status list includes all non-blacklisted,
|
Thus, the network-status list includes all non-blacklisted,
|
||||||
non-expired, non-superseded descriptors.
|
non-expired, non-superseded descriptors.
|
||||||
|
@ -968,11 +968,11 @@ $Id$
|
|||||||
Directory server administrators may label some servers or IPs as
|
Directory server administrators may label some servers or IPs as
|
||||||
blacklisted, and elect not to include them in their network-status lists.
|
blacklisted, and elect not to include them in their network-status lists.
|
||||||
|
|
||||||
Authorities SHOULD 'disable' any servers in excess of 3 on any single
|
Authorities SHOULD 'disable' any servers in excess of 3 on any single IP.
|
||||||
IP. When there are more than 3 to choose from, authorities should first
|
When there are more than 3 to choose from, authorities should first prefer
|
||||||
prefer Running to non-Running, and then prefer high-bandwidth to
|
authorities to non-authorities, then prefer Running to non-Running, and
|
||||||
low-bandwidth. To 'disable' a server, the authority *should* advertise
|
then prefer high-bandwidth to low-bandwidth. To 'disable' a server, the
|
||||||
it without the Running or Valid flag.
|
authority *should* advertise it without the Running or Valid flag.
|
||||||
|
|
||||||
Thus, the network-status vote includes all non-blacklisted,
|
Thus, the network-status vote includes all non-blacklisted,
|
||||||
non-expired, non-superseded descriptors.
|
non-expired, non-superseded descriptors.
|
||||||
|
@ -1727,16 +1727,30 @@ static int
|
|||||||
_compare_routerinfo_by_ip_and_bw(const void **a, const void **b)
|
_compare_routerinfo_by_ip_and_bw(const void **a, const void **b)
|
||||||
{
|
{
|
||||||
routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b;
|
routerinfo_t *first = *(routerinfo_t **)a, *second = *(routerinfo_t **)b;
|
||||||
|
int first_is_auth, second_is_auth;
|
||||||
|
|
||||||
/* we return -1 if first should appear before second... that is,
|
/* we return -1 if first should appear before second... that is,
|
||||||
* if first is a better router. */
|
* if first is a better router. */
|
||||||
if (first->addr < second->addr)
|
if (first->addr < second->addr)
|
||||||
return -1;
|
return -1;
|
||||||
else if (first->addr > second->addr)
|
else if (first->addr > second->addr)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
first_is_auth =
|
||||||
|
router_digest_is_trusted_dir(first->cache_info.identity_digest);
|
||||||
|
second_is_auth =
|
||||||
|
router_digest_is_trusted_dir(second->cache_info.identity_digest);
|
||||||
|
|
||||||
|
if (first_is_auth && !second_is_auth)
|
||||||
|
return -1;
|
||||||
|
else if (!first_is_auth && second_is_auth)
|
||||||
|
return 1;
|
||||||
|
|
||||||
else if (first->is_running && !second->is_running)
|
else if (first->is_running && !second->is_running)
|
||||||
return -1;
|
return -1;
|
||||||
else if (!first->is_running && second->is_running)
|
else if (!first->is_running && second->is_running)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
else if (first->bandwidthrate > second->bandwidthrate)
|
else if (first->bandwidthrate > second->bandwidthrate)
|
||||||
return -1;
|
return -1;
|
||||||
else if (first->bandwidthrate < second->bandwidthrate)
|
else if (first->bandwidthrate < second->bandwidthrate)
|
||||||
|
Loading…
Reference in New Issue
Block a user