Commit 0cfb6845 authored by Peter Palfrader's avatar Peter Palfrader
Browse files

Document that we break ties in favor of smaller SD digest if there are still...

Document that we break ties in favor of smaller SD digest if there are still ties after comparing the published timestamp

svn:r16432
parent 4cb2adcd
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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
+6 −1
Original line number Diff line number Diff line
@@ -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,
  {