diff options
author | Roger Dingledine <arma@torproject.org> | 2006-12-12 20:23:17 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2006-12-12 20:23:17 +0000 |
commit | 1efd3774286e57f2faeaf37d66291a94c6aaab67 (patch) | |
tree | 92cfbe8ee4a115cd2db5bd04ecc7224b629b8308 | |
parent | 7217f3ca47d1b78d0840d632e17ee1821a527022 (diff) | |
download | tor-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
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/or/circuituse.c | 2 | ||||
-rw-r--r-- | src/or/or.h | 4 |
3 files changed, 8 insertions, 1 deletions
@@ -25,6 +25,9 @@ Changes in version 0.1.2.5-xxxx - 200?-??-?? - Fix a bug on the Windows implementation of tor_mmap_file that would prevent the cached-routers file from ever loading. (reported by John Kimble.) + - 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. o Security bugfixes: - Do not log introduction points for hidden services if SafeLogging 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? */ |