mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
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.
This commit is contained in:
parent
9bb34aa897
commit
b15f75b632
4
changes/bug10777_internal_024
Normal file
4
changes/bug10777_internal_024
Normal file
@ -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.
|
@ -731,13 +731,15 @@ connection_ap_process_end_not_open(
|
|||||||
|
|
||||||
if (rh->length > 0) {
|
if (rh->length > 0) {
|
||||||
if (reason == END_STREAM_REASON_TORPROTOCOL ||
|
if (reason == END_STREAM_REASON_TORPROTOCOL ||
|
||||||
reason == END_STREAM_REASON_INTERNAL ||
|
|
||||||
reason == END_STREAM_REASON_DESTROY) {
|
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.
|
* hit the exit and it complained. Do not probe.
|
||||||
* Fail the circuit. */
|
* Fail the circuit. */
|
||||||
circ->path_state = PATH_STATE_USE_FAILED;
|
circ->path_state = PATH_STATE_USE_FAILED;
|
||||||
return -END_CIRC_REASON_TORPROTOCOL;
|
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 {
|
} else {
|
||||||
/* Path bias: If we get a valid reason code from the exit,
|
/* Path bias: If we get a valid reason code from the exit,
|
||||||
* it wasn't due to tagging.
|
* it wasn't due to tagging.
|
||||||
|
Loading…
Reference in New Issue
Block a user