summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2009-09-16 23:36:01 -0400
committerNick Mathewson <nickm@torproject.org>2009-09-16 23:36:01 -0400
commitb3991ea7d15c18dc33d4761f61f2e90ad49ab4b8 (patch)
tree7f488d3748de3ef464a7bb52e4c6d01119d1802e
parentdc3229313b6d2aaff437c6fc7fa55ead4409e93d (diff)
parentda219ee92445a8defa1ef33ffa2e82b63afe0402 (diff)
downloadtor-b3991ea7d15c18dc33d4761f61f2e90ad49ab4b8.tar.gz
tor-b3991ea7d15c18dc33d4761f61f2e90ad49ab4b8.zip
Merge commit 'karsten/fix-1073' into maint-0.2.1
-rw-r--r--ChangeLog3
-rw-r--r--src/or/rendclient.c11
2 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index fc51140c63..fccae7daed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -42,6 +42,9 @@ Changes in version 0.2.1.20 - 2009-??-??
0.2.1.6-alpha.
- Teach connection_ap_can_use_exit to respect the Exclude*Nodes config
options. Should fix bug 1090. Bugfix on 0.0.2-pre16.
+ - Avoid segfault in rare cases when finishing an introduction circuit
+ as a client and finding out that we don't have an introduction key
+ for it. Fixes bug 1073. Reported by Aaron Swartz.
o Minor features:
- Add a "getinfo status/accepted-server-descriptor" controller
diff --git a/src/or/rendclient.c b/src/or/rendclient.c
index 38383e8abb..13e43c87b7 100644
--- a/src/or/rendclient.c
+++ b/src/or/rendclient.c
@@ -94,9 +94,14 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
}
});
if (!intro_key) {
+ /** XXX This case probably means that the intro point vanished while
+ * we were building a circuit to it. In the future, we should find
+ * out how that happened and whether we should kill the circuits to
+ * removed intro points immediately. See task 1073. */
+ int num_intro_points = smartlist_len(entry->parsed->intro_nodes);
if (rend_cache_lookup_entry(introcirc->rend_data->onion_address,
0, &entry) > 0) {
- log_warn(LD_BUG, "We have both a v0 and a v2 rend desc for this "
+ log_info(LD_REND, "We have both a v0 and a v2 rend desc for this "
"service. The v2 desc doesn't contain the introduction "
"point (and key) to send an INTRODUCE1/2 cell to this "
"introduction point. Assuming the introduction point "
@@ -107,9 +112,9 @@ rend_client_send_introduction(origin_circuit_t *introcirc,
/* See flyspray task 1024. */
intro_key = entry->parsed->pk;
} else {
- log_warn(LD_BUG, "Internal error: could not find intro key; we "
+ log_info(LD_REND, "Internal error: could not find intro key; we "
"only have a v2 rend desc with %d intro points.",
- smartlist_len(entry->parsed->intro_nodes));
+ num_intro_points);
goto err;
}
}