summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2009-01-04 03:03:40 +0000
committerNick Mathewson <nickm@torproject.org>2009-01-04 03:03:40 +0000
commit569e882496a33cc9b9deb45288671e10b31af31e (patch)
treedae0f5cdafe787c7a32738e254f65b163bd7c0c9
parent6515b74f0e3e3caf53c1ee3c09c6131e9b4b8393 (diff)
downloadtor-569e882496a33cc9b9deb45288671e10b31af31e.tar.gz
tor-569e882496a33cc9b9deb45288671e10b31af31e.zip
Backport r17137: Patch from rovv: send back END cell in response to connect attempts to nonexistent hidden service port.
svn:r17868
-rw-r--r--ChangeLog3
-rw-r--r--doc/TODO.0202
-rw-r--r--src/or/connection_edge.c2
3 files changed, 5 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 0a06f09a0a..a7eaafdbf6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -49,6 +49,9 @@ Changes in version 0.2.0.33 - 200?-??-??
- Fix a race condition when freeing keys shared between main thread
and CPU workers that could result in a memory leak. Bugfix on
0.1.0.1-rc. Fixes bug 889.
+ - Send a valid END cell back when a client tries to connect to a
+ nonexistent hidden service port. Bugfix on 0.1.2.15. Fixes bug
+ 840. Patch from rovv.
o Minor features:
- Report the case where all signatures in a detached set are rejected
diff --git a/doc/TODO.020 b/doc/TODO.020
index da06a8f57b..1cb129c75b 100644
--- a/doc/TODO.020
+++ b/doc/TODO.020
@@ -16,7 +16,7 @@ Backport for 0.2.0 once better tested:
"no circuits are pending."
o See also r17181...
o ... and r17184.
- - r17137: send END cell in response to connect to nonexistent hidserv port.
+ o r17137: send END cell in response to connect to nonexistent hidserv port.
- r17138: reject *:* servers should never do DNS lookups.
o r17139: Fix another case of overriding .exit choices.
- r17162 and r17164: fix another case of not checking cpath_layer.
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 0917bb51f5..6044d6b877 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -2497,7 +2497,7 @@ connection_exit_begin_conn(cell_t *cell, circuit_t *circ)
n_stream->_base.port);
end_payload[0] = END_STREAM_REASON_EXITPOLICY;
relay_send_command_from_edge(rh.stream_id, circ, RELAY_COMMAND_END,
- end_payload, 1, NULL);
+ end_payload, 1, origin_circ->cpath->prev);
connection_free(TO_CONN(n_stream));
tor_free(address);
return 0;