summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Perry <mikeperry-git@fscked.org>2012-09-17 18:25:28 -0700
committerMike Perry <mikeperry-git@fscked.org>2012-09-17 18:25:28 -0700
commit4bfed4378d3b101757e50b058e3d462fa88ecfd3 (patch)
tree31ae4fb1120bed79ae96bd8fb911b6d6736323d7
parentb1447a4312c47f13bf8ddddab09f19ee73640a3e (diff)
downloadtor-4bfed4378d3b101757e50b058e3d462fa88ecfd3.tar.gz
tor-4bfed4378d3b101757e50b058e3d462fa88ecfd3.zip
Bug 6866: Convert pathbias asserts into log messages.
Asserts were hit by Tor2Web mode.
-rw-r--r--changes/bug68664
-rw-r--r--src/or/circuitbuild.c40
2 files changed, 40 insertions, 4 deletions
diff --git a/changes/bug6866 b/changes/bug6866
new file mode 100644
index 0000000000..561676b765
--- /dev/null
+++ b/changes/bug6866
@@ -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.
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 9d52b5e021..6bd1eb32e7 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -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;
}