mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 06:48:05 +01:00
Document that we break ties in favor of smaller SD digest if there are still ties after comparing the published timestamp
svn:r16432
This commit is contained in:
parent
4cb2adcd4f
commit
0cfb68454e
2 changed files with 9 additions and 3 deletions
|
@ -1145,8 +1145,9 @@ $Id$
|
|||
* Two router entries are "the same" if they have the same
|
||||
<descriptor digest, published time, nickname, IP, ports> tuple.
|
||||
We choose the tuple for a given router as whichever tuple appears
|
||||
for that router in the most votes. We break ties in favor of
|
||||
the more recently published.
|
||||
for that router in the most votes. We break ties first in favor of
|
||||
the more recently published, then in favor of smaller server
|
||||
descriptor digest.
|
||||
|
||||
* The Named flag appears if it is included for this routerstatus by
|
||||
_any_ authority, and if all authorities that list it list the same
|
||||
|
|
|
@ -337,7 +337,8 @@ _compare_vote_rs(const void **_a, const void **_b)
|
|||
|
||||
/** Given a list of vote_routerstatus_t, all for the same router identity,
|
||||
* return whichever is most frequent, breaking ties in favor of more
|
||||
* recently published vote_routerstatus_t.
|
||||
* recently published vote_routerstatus_t and in case of ties there,
|
||||
* in favour of smaller descriptor digest.
|
||||
*/
|
||||
static vote_routerstatus_t *
|
||||
compute_routerstatus_consensus(smartlist_t *votes)
|
||||
|
@ -346,6 +347,10 @@ compute_routerstatus_consensus(smartlist_t *votes)
|
|||
int most_n = 0, cur_n = 0;
|
||||
time_t most_published = 0;
|
||||
|
||||
/* _compare_vote_rs() sorts the items by identity digest (all the same),
|
||||
* then by SD digest. That way, if we have a tie that the published_on
|
||||
* date cannot tie, we use the descriptor with the smaller digest.
|
||||
*/
|
||||
smartlist_sort(votes, _compare_vote_rs);
|
||||
SMARTLIST_FOREACH(votes, vote_routerstatus_t *, rs,
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue