[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/maint-0.2.4] Don't treat END_STREAM_REASON_INTERNAL as total circuit failure
commit b15f75b63266742aa6aa358c553799a31f0b350e
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date: Sun Feb 9 21:35:14 2014 -0500
Don't treat END_STREAM_REASON_INTERNAL as total circuit failure
It can happen because we sent something that got an ENETUNREACH
response.
Bugfix on 0.2.4.8-alpha; fixes a part of bug 10777.
---
changes/bug10777_internal_024 | 4 ++++
src/or/relay.c | 6 ++++--
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/changes/bug10777_internal_024 b/changes/bug10777_internal_024
new file mode 100644
index 0000000..4544147
--- /dev/null
+++ b/changes/bug10777_internal_024
@@ -0,0 +1,4 @@
+ o Major bugfixes:
+ - Do not treat END_STREAM_REASON_INTERNAL as indicating a definite
+ circuit failure, since it could also indicate an ENETUNREACH
+ error. Fixes part of bug 10777; bugfix on 0.2.4.8-alpha.
diff --git a/src/or/relay.c b/src/or/relay.c
index 63119cb..57633f8 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -731,13 +731,15 @@ connection_ap_process_end_not_open(
if (rh->length > 0) {
if (reason == END_STREAM_REASON_TORPROTOCOL ||
- reason == END_STREAM_REASON_INTERNAL ||
reason == END_STREAM_REASON_DESTROY) {
- /* All three of these reasons could mean a failed tag
+ /* Both of these reasons could mean a failed tag
* hit the exit and it complained. Do not probe.
* Fail the circuit. */
circ->path_state = PATH_STATE_USE_FAILED;
return -END_CIRC_REASON_TORPROTOCOL;
+ } else if (reason == END_STREAM_REASON_INTERNAL) {
+ /* We can't infer success or failure, since older Tors report
+ * ENETUNREACH as END_STREAM_REASON_INTERNAL. */
} else {
/* Path bias: If we get a valid reason code from the exit,
* it wasn't due to tagging.
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits