diff options
author | Nick Mathewson <nickm@torproject.org> | 2013-01-16 12:08:10 -0500 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2013-01-16 12:09:49 -0500 |
commit | d1b5ae903f330c03c32baa60fcc6679d148ad8ac (patch) | |
tree | af925129b6a1e582ba946462ff1002786ba2a4ea /src/or/reasons.c | |
parent | 7fc91dc274f38dc50f2a6eef2db060c788ef3040 (diff) | |
download | tor-d1b5ae903f330c03c32baa60fcc6679d148ad8ac.tar.gz tor-d1b5ae903f330c03c32baa60fcc6679d148ad8ac.zip |
When we get an END cell before CONNECTED, don't report SOCKS success
Bug 7902; fix on 0.1.0.1-rc.
Diffstat (limited to 'src/or/reasons.c')
-rw-r--r-- | src/or/reasons.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/or/reasons.c b/src/or/reasons.c index 26ad12e8fd..637f8cdc7d 100644 --- a/src/or/reasons.c +++ b/src/or/reasons.c @@ -105,7 +105,12 @@ stream_end_reason_to_socks5_response(int reason) case END_STREAM_REASON_DESTROY: return SOCKS5_GENERAL_ERROR; case END_STREAM_REASON_DONE: - return SOCKS5_SUCCEEDED; + /* Note that 'DONE' usually indicates a successful close from the other + * side of the stream... but if we receive it before a connected cell -- + * that is, before we have sent a SOCKS reply -- that means that the + * other side of the circuit closed the connection before telling us it + * was complete. */ + return SOCKS5_CONNECTION_REFUSED; case END_STREAM_REASON_TIMEOUT: return SOCKS5_TTL_EXPIRED; case END_STREAM_REASON_NOROUTE: |