Преглед на файлове

a changelog for write limiting. also, disable the "advertise dirport
until we reach our max bandwidth if it's tiny" trick now that we
do the bandwidth self-test on boot.


svn:r9134

Roger Dingledine преди 17 години
родител
ревизия
ce51a1d349
променени са 3 файла, в които са добавени 10 реда и са изтрити 10 реда
  1. 3 0
      ChangeLog
  2. 1 1
      src/or/hibernate.c
  3. 6 9
      src/or/router.c

+ 3 - 0
ChangeLog

@@ -4,6 +4,9 @@ Changes in version 0.1.2.5-xxxx - 200?-??-??
       server via TLS so we do encrypted directory requests rather than
       plaintext. On by default; disable via the TunnelDirConns config
       option if you like.
+    - Enable write limiting as well as read limiting. Now we sacrifice
+      capacity if we're pushing out lots of directory traffic, rather
+      than overrunning the user's intended bandwidth limits.
 
   o Minor features:
     - Start using the state file to store bandwidth accounting data:

+ 1 - 1
src/or/hibernate.c

@@ -716,7 +716,7 @@ static int
 hibernate_soft_limit_reached(void)
 {
   uint64_t soft_limit = DBL_TO_U64(U64_TO_DBL(get_options()->AccountingMax)
-                                     * .95);
+                                    * .95);
   if (!soft_limit)
     return 0;
   return n_bytes_read_in_interval >= soft_limit

+ 6 - 9
src/or/router.c

@@ -426,15 +426,12 @@ decide_to_advertise_dirport(or_options_t *options, routerinfo_t *router)
     return 0;
   if (!check_whether_dirport_reachable())
     return 0;
-  if (router->bandwidthcapacity >= router->bandwidthrate) {
-    /* check if we might potentially hibernate. */
-    if (options->AccountingMax != 0)
-      return 0;
-    /* also check if we're advertising a small amount, and have
-       a "boring" DirPort. */
-    if (router->bandwidthrate < 50000 && router->dir_port > 1024)
-      return 0;
-  }
+  /* check if we might potentially hibernate. */
+  if (accounting_is_enabled(options))
+    return 0;
+  /* also check if we're advertising a small amount */
+  if (router->bandwidthrate <= 51200)
+    return 0;
 
   /* Sounds like a great idea. Let's publish it. */
   return router->dir_port;