mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 10:12:15 +01:00
Merge commit 'sebastian/misc-reason'
This commit is contained in:
commit
9bcea4a8ef
4
changes/misc-reason
Normal file
4
changes/misc-reason
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
o Minor bugfixes:
|
||||||
|
- Exit nodes didn't recognize EHOSTUNREACH as a stream ending reason
|
||||||
|
and sent back END_STREAM_REASON_NOROUTE. Also update the spec to
|
||||||
|
reflect this new reason. Bugfix on 0.1.0.1-rc; fixes bug 1793.
|
@ -1049,7 +1049,7 @@
|
|||||||
|
|
||||||
Reason = "MISC" / "RESOLVEFAILED" / "CONNECTREFUSED" /
|
Reason = "MISC" / "RESOLVEFAILED" / "CONNECTREFUSED" /
|
||||||
"EXITPOLICY" / "DESTROY" / "DONE" / "TIMEOUT" /
|
"EXITPOLICY" / "DESTROY" / "DONE" / "TIMEOUT" /
|
||||||
"HIBERNATING" / "INTERNAL"/ "RESOURCELIMIT" /
|
"NOROUTE" / "HIBERNATING" / "INTERNAL"/ "RESOURCELIMIT" /
|
||||||
"CONNRESET" / "TORPROTOCOL" / "NOTDIRECTORY" / "END"
|
"CONNRESET" / "TORPROTOCOL" / "NOTDIRECTORY" / "END"
|
||||||
|
|
||||||
The "REASON" field is provided only for FAILED, CLOSED, and DETACHED
|
The "REASON" field is provided only for FAILED, CLOSED, and DETACHED
|
||||||
|
@ -835,7 +835,8 @@ see tor-design.pdf.
|
|||||||
6 -- REASON_DONE (Anonymized TCP connection was closed)
|
6 -- REASON_DONE (Anonymized TCP connection was closed)
|
||||||
7 -- REASON_TIMEOUT (Connection timed out, or OR timed out
|
7 -- REASON_TIMEOUT (Connection timed out, or OR timed out
|
||||||
while connecting)
|
while connecting)
|
||||||
8 -- (unallocated) [**]
|
8 -- REASON_NOROUTE (Routing error while attempting to
|
||||||
|
contact destination)
|
||||||
9 -- REASON_HIBERNATING (OR is temporarily hibernating)
|
9 -- REASON_HIBERNATING (OR is temporarily hibernating)
|
||||||
10 -- REASON_INTERNAL (Internal error at the OR)
|
10 -- REASON_INTERNAL (Internal error at the OR)
|
||||||
11 -- REASON_RESOURCELIMIT (OR has no resources to fulfill request)
|
11 -- REASON_RESOURCELIMIT (OR has no resources to fulfill request)
|
||||||
@ -857,8 +858,6 @@ see tor-design.pdf.
|
|||||||
|
|
||||||
[*] Older versions of Tor also send this reason when connections are
|
[*] Older versions of Tor also send this reason when connections are
|
||||||
reset.
|
reset.
|
||||||
[**] Due to a bug in versions of Tor through 0095, error reason 8 must
|
|
||||||
remain allocated until that version is obsolete.
|
|
||||||
|
|
||||||
--- [The rest of this section describes unimplemented functionality.]
|
--- [The rest of this section describes unimplemented functionality.]
|
||||||
|
|
||||||
|
@ -551,7 +551,7 @@ typedef enum {
|
|||||||
#define END_STREAM_REASON_DESTROY 5
|
#define END_STREAM_REASON_DESTROY 5
|
||||||
#define END_STREAM_REASON_DONE 6
|
#define END_STREAM_REASON_DONE 6
|
||||||
#define END_STREAM_REASON_TIMEOUT 7
|
#define END_STREAM_REASON_TIMEOUT 7
|
||||||
/* 8 is unallocated for historical reasons. */
|
#define END_STREAM_REASON_NOROUTE 8
|
||||||
#define END_STREAM_REASON_HIBERNATING 9
|
#define END_STREAM_REASON_HIBERNATING 9
|
||||||
#define END_STREAM_REASON_INTERNAL 10
|
#define END_STREAM_REASON_INTERNAL 10
|
||||||
#define END_STREAM_REASON_RESOURCELIMIT 11
|
#define END_STREAM_REASON_RESOURCELIMIT 11
|
||||||
|
@ -28,6 +28,7 @@ stream_end_reason_to_control_string(int reason)
|
|||||||
case END_STREAM_REASON_DESTROY: return "DESTROY";
|
case END_STREAM_REASON_DESTROY: return "DESTROY";
|
||||||
case END_STREAM_REASON_DONE: return "DONE";
|
case END_STREAM_REASON_DONE: return "DONE";
|
||||||
case END_STREAM_REASON_TIMEOUT: return "TIMEOUT";
|
case END_STREAM_REASON_TIMEOUT: return "TIMEOUT";
|
||||||
|
case END_STREAM_REASON_NOROUTE: "return "NOROUTE";
|
||||||
case END_STREAM_REASON_HIBERNATING: return "HIBERNATING";
|
case END_STREAM_REASON_HIBERNATING: return "HIBERNATING";
|
||||||
case END_STREAM_REASON_INTERNAL: return "INTERNAL";
|
case END_STREAM_REASON_INTERNAL: return "INTERNAL";
|
||||||
case END_STREAM_REASON_RESOURCELIMIT: return "RESOURCELIMIT";
|
case END_STREAM_REASON_RESOURCELIMIT: return "RESOURCELIMIT";
|
||||||
@ -62,6 +63,7 @@ stream_end_reason_to_string(int reason)
|
|||||||
case END_STREAM_REASON_DESTROY: return "destroyed";
|
case END_STREAM_REASON_DESTROY: return "destroyed";
|
||||||
case END_STREAM_REASON_DONE: return "closed normally";
|
case END_STREAM_REASON_DONE: return "closed normally";
|
||||||
case END_STREAM_REASON_TIMEOUT: return "gave up (timeout)";
|
case END_STREAM_REASON_TIMEOUT: return "gave up (timeout)";
|
||||||
|
case END_STREAM_REASON_NOROUTE: return "no route to host";
|
||||||
case END_STREAM_REASON_HIBERNATING: return "server is hibernating";
|
case END_STREAM_REASON_HIBERNATING: return "server is hibernating";
|
||||||
case END_STREAM_REASON_INTERNAL: return "internal error at server";
|
case END_STREAM_REASON_INTERNAL: return "internal error at server";
|
||||||
case END_STREAM_REASON_RESOURCELIMIT: return "server out of resources";
|
case END_STREAM_REASON_RESOURCELIMIT: return "server out of resources";
|
||||||
@ -104,6 +106,8 @@ stream_end_reason_to_socks5_response(int reason)
|
|||||||
return SOCKS5_SUCCEEDED;
|
return SOCKS5_SUCCEEDED;
|
||||||
case END_STREAM_REASON_TIMEOUT:
|
case END_STREAM_REASON_TIMEOUT:
|
||||||
return SOCKS5_TTL_EXPIRED;
|
return SOCKS5_TTL_EXPIRED;
|
||||||
|
case END_STREAM_REASON_NOROUTE:
|
||||||
|
return SOCKS5_HOST_UNREACHABLE;
|
||||||
case END_STREAM_REASON_RESOURCELIMIT:
|
case END_STREAM_REASON_RESOURCELIMIT:
|
||||||
return SOCKS5_GENERAL_ERROR;
|
return SOCKS5_GENERAL_ERROR;
|
||||||
case END_STREAM_REASON_HIBERNATING:
|
case END_STREAM_REASON_HIBERNATING:
|
||||||
@ -164,6 +168,8 @@ errno_to_stream_end_reason(int e)
|
|||||||
S_CASE(ENOTCONN):
|
S_CASE(ENOTCONN):
|
||||||
S_CASE(ENETUNREACH):
|
S_CASE(ENETUNREACH):
|
||||||
return END_STREAM_REASON_INTERNAL;
|
return END_STREAM_REASON_INTERNAL;
|
||||||
|
E_CASE(EHOSTUNREACH):
|
||||||
|
return END_STREAM_REASON_NOROUTE;
|
||||||
S_CASE(ECONNREFUSED):
|
S_CASE(ECONNREFUSED):
|
||||||
return END_STREAM_REASON_CONNECTREFUSED;
|
return END_STREAM_REASON_CONNECTREFUSED;
|
||||||
S_CASE(ECONNRESET):
|
S_CASE(ECONNRESET):
|
||||||
|
@ -787,6 +787,7 @@ connection_ap_process_end_not_open(
|
|||||||
case END_STREAM_REASON_RESOLVEFAILED:
|
case END_STREAM_REASON_RESOLVEFAILED:
|
||||||
case END_STREAM_REASON_TIMEOUT:
|
case END_STREAM_REASON_TIMEOUT:
|
||||||
case END_STREAM_REASON_MISC:
|
case END_STREAM_REASON_MISC:
|
||||||
|
case END_STREAM_REASON_NOROUTE:
|
||||||
if (client_dns_incr_failures(conn->socks_request->address)
|
if (client_dns_incr_failures(conn->socks_request->address)
|
||||||
< MAX_RESOLVE_FAILURES) {
|
< MAX_RESOLVE_FAILURES) {
|
||||||
/* We haven't retried too many times; reattach the connection. */
|
/* We haven't retried too many times; reattach the connection. */
|
||||||
|
Loading…
Reference in New Issue
Block a user