]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Rate-limit "No circuits are opened" message to once-per-hour
authorNick Mathewson <nickm@torproject.org>
Wed, 26 Dec 2012 15:05:45 +0000 (10:05 -0500)
committerNick Mathewson <nickm@torproject.org>
Wed, 26 Dec 2012 15:05:45 +0000 (10:05 -0500)
mr-4 reports on #7799 that he was seeing it several times per second,
which suggests that things had gone very wrong.

This isn't a real fix, but it should make Tor usable till we can
figure out the real issue.

changes/bug7799.ratelim [new file with mode: 0644]
src/or/circuituse.c

diff --git a/changes/bug7799.ratelim b/changes/bug7799.ratelim
new file mode 100644 (file)
index 0000000..cb7742c
--- /dev/null
@@ -0,0 +1,6 @@
+  o Minor bugfixes:
+    - Rate-limit the "No circuits are opened. Relaxed timeout for a
+      circuit with channel state open..." message to once per hour to
+      keep it from filling the notice logs. Mitigates bug 7799 but does
+      not fix the underlying cause. Bugfix on 0.2.4.7-alpha.
+
index 57ecef1ee462a42dbb18da2d91fa00b75c6f63db..c3495b4402a44bf2ec4573b9ee8e542dbde3c694 100644 (file)
@@ -478,13 +478,18 @@ circuit_expire_building(void)
         }
         continue;
       } else {
-        log_notice(LD_CIRC,
+        static ratelim_t relax_timeout_limit = RATELIM_INIT(3600);
+        char *m;
+        if ((m = rate_limit_log(&relax_timeout_limit, approx_time()))) {
+          log_notice(LD_CIRC,
                  "No circuits are opened. Relaxed timeout for "
                  "a circuit with channel state %s to %ldms. "
                  "However, it appears the circuit has timed out anyway. "
-                 "%d guards are live. ",
+                 "%d guards are live. %s",
                  channel_state_to_string(victim->n_chan->state),
-                 (long)circ_times.close_ms, num_live_entry_guards(0));
+                     (long)circ_times.close_ms, num_live_entry_guards(0), m);
+          tor_free(m);
+        }
       }
     }