[tor-commits] [tor/master] Add rate-limited log message to bug5263 fix

nickm at torproject.org nickm at torproject.org
Wed Jun 13 20:30:29 UTC 2012


commit 9282c88998f80a027b5260472bf21125693a15bc
Author: Nick Mathewson <nickm at torproject.org>
Date:   Tue May 15 10:22:17 2012 -0400

    Add rate-limited log message to bug5263 fix
    
    Initially I said, "I claim that we shouldn't be reading and marked;
    let's see if I'm right."  But Rob finds that it does.
---
 src/or/main.c |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/or/main.c b/src/or/main.c
index a5ad1d9..3e913d9 100644
--- a/src/or/main.c
+++ b/src/or/main.c
@@ -854,14 +854,24 @@ conn_close_if_marked(int i)
     	   will be re-added on next token bucket refill. Prevents busy Libevent
     	   loops where we keep ending up here and returning 0 until we are no
     	   longer blocked on bandwidth. */
-        if (connection_is_reading(conn)) {
-          conn->read_blocked_on_bw = 1;
-          connection_stop_reading(conn);
-        }
         if (connection_is_writing(conn)) {
           conn->write_blocked_on_bw = 1;
           connection_stop_writing(conn);
         }
+        if (connection_is_reading(conn)) {
+#define MARKED_READING_RATE 180
+          static ratelim_t marked_read_lim = RATELIM_INIT(MARKED_READING_RATE);
+          char *m;
+          if ((m = rate_limit_log(&marked_read_lim, now))) {
+            log_warn(LD_BUG, "Marked connection (fd %d, type %s, state %s) "
+                     "is still reading; that shouldn't happen.%s",
+                     (int)conn->s, conn_type_to_string(conn->type),
+                     conn_state_to_string(conn->type, conn->state), m);
+            tor_free(m);
+          }
+          conn->read_blocked_on_bw = 1;
+          connection_stop_reading(conn);
+        }
       }
       return 0;
     }





More information about the tor-commits mailing list