[tor-commits] [tor/master] Don't delay uploading a new desc if bw estimate was 0

nickm at torproject.org nickm at torproject.org
Tue Sep 2 22:55:55 UTC 2014


commit 14abf1c3f1534da308eb221fef483a293d449d4f
Author: Sebastian Hahn <sebastian at torproject.org>
Date:   Sat Aug 30 08:36:20 2014 +0200

    Don't delay uploading a new desc if bw estimate was 0
    
    When a tor relay starts up and has no historical information about its
    bandwidth capability, it uploads a descriptor with a bw estimate of 0.
    It then starts its bw selftest, but has to wait 20 minutes to upload the
    next descriptor due to the MAX_BANDWIDTH_CHANGE_FREQ delay. This change
    should mean that on average, relays start seeing meaningful traffic a
    little quicker, since they will have a higher chance to appear in the
    consensus with a nonzero bw.
    
    Patch by Roger, changes file and comment by Sebastian.
---
 changes/bug13000 |    5 +++++
 src/or/router.c  |    5 +++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/changes/bug13000 b/changes/bug13000
new file mode 100644
index 0000000..e537fb5
--- /dev/null
+++ b/changes/bug13000
@@ -0,0 +1,5 @@
+  o Minor bugfixes:
+    - If our previous bandwidth estimate was 0 bytes, allow publishing a
+      new relay descriptor immediately. Fixes bug 13000; bugfix on
+      0.1.1.6-alpha.
+
diff --git a/src/or/router.c b/src/or/router.c
index 87b6705..4d1e74e 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -2063,7 +2063,8 @@ mark_my_descriptor_dirty(const char *reason)
 }
 
 /** How frequently will we republish our descriptor because of large (factor
- * of 2) shifts in estimated bandwidth? */
+ * of 2) shifts in estimated bandwidth? Note: We don't use this constant
+ * if our previous bandwidth estimate was exactly 0. */
 #define MAX_BANDWIDTH_CHANGE_FREQ (20*60)
 
 /** Check whether bandwidth has changed a lot since the last time we announced
@@ -2081,7 +2082,7 @@ check_descriptor_bandwidth_changed(time_t now)
   if ((prev != cur && (!prev || !cur)) ||
       cur > prev*2 ||
       cur < prev/2) {
-    if (last_changed+MAX_BANDWIDTH_CHANGE_FREQ < now) {
+    if (last_changed+MAX_BANDWIDTH_CHANGE_FREQ < now || !prev) {
       log_info(LD_GENERAL,
                "Measured bandwidth has changed; rebuilding descriptor.");
       mark_my_descriptor_dirty("bandwidth has changed");





More information about the tor-commits mailing list