[or-cvs] [tor/master] Fix authority side of 2203.

nickm at torproject.org nickm at torproject.org
Fri Feb 4 17:27:23 UTC 2011


commit 7b24b8e37582470214dbb14f5f7b56954ed441f5
Author: Mike Perry <mikeperry-git at fscked.org>
Date:   Mon Jan 24 21:35:10 2011 -0800

    Fix authority side of 2203.
    
    Do not add Exit bandwidth to E if BadExit is set.
---
 src/or/dirvote.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/or/dirvote.c b/src/or/dirvote.c
index 41985d1..529b45c 100644
--- a/src/or/dirvote.c
+++ b/src/or/dirvote.c
@@ -50,7 +50,7 @@ static int dirvote_publish_consensus(void);
 static char *make_consensus_method_list(int low, int high, const char *sep);
 
 /** The highest consensus method that we currently support. */
-#define MAX_SUPPORTED_CONSENSUS_METHOD 10
+#define MAX_SUPPORTED_CONSENSUS_METHOD 11
 
 /** Lowest consensus method that contains a 'directory-footer' marker */
 #define MIN_METHOD_FOR_FOOTER 9
@@ -1693,7 +1693,7 @@ networkstatus_compute_consensus(smartlist_t *votes,
       const char *chosen_name = NULL;
       int exitsummary_disagreement = 0;
       int is_named = 0, is_unnamed = 0, is_running = 0;
-      int is_guard = 0, is_exit = 0;
+      int is_guard = 0, is_exit = 0, is_bad_exit = 0;
       int naming_conflict = 0;
       int n_listing = 0;
       int i;
@@ -1819,6 +1819,8 @@ networkstatus_compute_consensus(smartlist_t *votes,
               is_guard = 1;
             else if (!strcmp(fl, "Running"))
               is_running = 1;
+            else if (!strcmp(fl, "BadExit"))
+              is_bad_exit = 1;
           }
         }
       });
@@ -1845,6 +1847,11 @@ networkstatus_compute_consensus(smartlist_t *votes,
         rs_out.bandwidth = median_uint32(bandwidths, num_bandwidths);
       }
 
+      /* Fix bug 2203: Do not count BadExit nodes as Exits for bw weights */
+      if (consensus_method >= 11) {
+        is_exit = is_exit && !is_bad_exit;
+      }
+
       if (consensus_method >= MIN_METHOD_FOR_BW_WEIGHTS) {
         if (rs_out.has_bandwidth) {
           T += rs_out.bandwidth;





More information about the tor-commits mailing list