aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2006-12-12 20:23:17 +0000
committerRoger Dingledine <arma@torproject.org>2006-12-12 20:23:17 +0000
commit1efd3774286e57f2faeaf37d66291a94c6aaab67 (patch)
tree92cfbe8ee4a115cd2db5bd04ecc7224b629b8308 /src
parent7217f3ca47d1b78d0840d632e17ee1821a527022 (diff)
downloadtor-1efd3774286e57f2faeaf37d66291a94c6aaab67.tar
tor-1efd3774286e57f2faeaf37d66291a94c6aaab67.tar.gz
Fix a bug in 0.1.2.2-alpha that prevented clients from asking
to resolve an address at a given exit node even when they ask for it by name. svn:r9095
Diffstat (limited to 'src')
-rw-r--r--src/or/circuituse.c2
-rw-r--r--src/or/or.h4
2 files changed, 5 insertions, 1 deletions
diff --git a/src/or/circuituse.c b/src/or/circuituse.c
index 73e72f3e1..42d220f1d 100644
--- a/src/or/circuituse.c
+++ b/src/or/circuituse.c
@@ -1182,7 +1182,7 @@ connection_ap_handshake_attach_circuit(edge_connection_t *conn)
}
return -1;
}
- if (conn->_base.purpose != EXIT_PURPOSE_RESOLVE &&
+ if (!SOCKS_COMMAND_IS_RESOLVE(conn->socks_request->command) &&
!connection_ap_can_use_exit(conn, router)) {
log_fn(opt ? LOG_INFO : LOG_WARN, LD_APP,
"Requested exit point '%s' would refuse request. %s.",
diff --git a/src/or/or.h b/src/or/or.h
index 080c7f4ff..22f9e15e3 100644
--- a/src/or/or.h
+++ b/src/or/or.h
@@ -1712,6 +1712,10 @@ static INLINE void or_state_mark_dirty(or_state_t *state, time_t when)
#define SOCKS_COMMAND_CONNECT 0x01
#define SOCKS_COMMAND_RESOLVE 0xF0
#define SOCKS_COMMAND_RESOLVE_PTR 0xF1
+
+#define SOCKS_COMMAND_IS_RESOLVE(c) ((c)==SOCKS_COMMAND_RESOLVE || \
+ (c)==SOCKS_COMMAND_RESOLVE_PTR)
+
/** State of a SOCKS request from a user to an OP */
struct socks_request_t {
char socks_version; /**< Which version of SOCKS did the client use? */