Przeglądaj źródła

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

Roger Dingledine 17 lat temu
rodzic
commit
1efd377428
3 zmienionych plików z 8 dodań i 1 usunięć
  1. 3 0
      ChangeLog
  2. 1 1
      src/or/circuituse.c
  3. 4 0
      src/or/or.h

+ 3 - 0
ChangeLog

@@ -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

+ 1 - 1
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.",

+ 4 - 0
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? */