--- /dev/null
+ 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.
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.