]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Bug 6866: Convert pathbias asserts into log messages.
authorMike Perry <mikeperry-git@fscked.org>
Tue, 18 Sep 2012 01:25:28 +0000 (18:25 -0700)
committerMike Perry <mikeperry-git@fscked.org>
Tue, 18 Sep 2012 01:25:28 +0000 (18:25 -0700)
Asserts were hit by Tor2Web mode.

changes/bug6866 [new file with mode: 0644]
src/or/circuitbuild.c

diff --git a/changes/bug6866 b/changes/bug6866
new file mode 100644 (file)
index 0000000..561676b
--- /dev/null
@@ -0,0 +1,4 @@
+  o Minor bugfixes:
+    - Convert an assert in the pathbias code to a log message. Assert
+      appears to only be triggerable by Tor2Web mode. Fixes bug 6866;
+      bugfix on 0.2.3.17-beta.
index 9d52b5e021723b21dc5ff5b8fffa545af60252a5..6bd1eb32e706cd379926b93430353b2b0252a6ee 100644 (file)
@@ -2646,8 +2646,24 @@ pathbias_count_first_hop(origin_circuit_t *circ)
   char *rate_msg = NULL;
 
   /* Completely ignore one hop circuits */
-  if (circ->build_state->onehop_tunnel) {
-    tor_assert(circ->build_state->desired_path_len == 1);
+  if (circ->build_state->onehop_tunnel || 
+          circ->build_state->desired_path_len == 1) {
+    /* Check for inconsistency */
+    if (circ->build_state->desired_path_len != 1 || 
+            !circ->build_state->onehop_tunnel) {
+      if ((rate_msg = rate_limit_log(&first_hop_notice_limit,
+              approx_time()))) {
+        log_info(LD_BUG,
+               "One-hop circuit has length %d. Path state is %s. "
+               "Circuit is a %s currently %s. %s",
+               circ->build_state->desired_path_len,
+               pathbias_state_to_string(circ->path_state),
+               circuit_purpose_to_string(circ->_base.purpose),
+               circuit_state_to_string(circ->_base.state),
+               rate_msg);
+      }
+      tor_fragile_assert();
+    }
     return 0;
   }
 
@@ -2740,8 +2756,24 @@ pathbias_count_success(origin_circuit_t *circ)
   char *rate_msg = NULL;
 
   /* Ignore one hop circuits */
-  if (circ->build_state->onehop_tunnel) {
-    tor_assert(circ->build_state->desired_path_len == 1);
+  if (circ->build_state->onehop_tunnel || 
+          circ->build_state->desired_path_len == 1) {
+    /* Check for consistency */
+    if (circ->build_state->desired_path_len != 1 || 
+            !circ->build_state->onehop_tunnel) {
+      if ((rate_msg = rate_limit_log(&success_notice_limit,
+              approx_time()))) {
+        log_info(LD_BUG,
+               "One-hop circuit has length %d. Path state is %s. "
+               "Circuit is a %s currently %s. %s",
+               circ->build_state->desired_path_len,
+               pathbias_state_to_string(circ->path_state),
+               circuit_purpose_to_string(circ->_base.purpose),
+               circuit_state_to_string(circ->_base.state),
+               rate_msg);
+      }
+      tor_fragile_assert();
+    }
     return;
   }