Loading ChangeLog +2 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,8 @@ Changes in version 0.2.1.16-?? - 2009-??-?? o Minor features: - Update to the "June 3 2009" ip-to-country file. - Do not have tor-resolve automatically refuse all .onion addresses; if AutomapHostsOnResolve is set, this will work fine. o Minor bugfixes (on 0.2.0.x): - Log correct error messages for DNS-related network errors on Loading src/tools/tor-resolve.c +18 −10 Original line number Diff line number Diff line Loading @@ -107,7 +107,8 @@ build_socks_resolve_request(char **out, * Return 0 on success, -1 on error. */ static int parse_socks4a_resolve_response(const char *response, size_t len, parse_socks4a_resolve_response(const char *hostname, const char *response, size_t len, uint32_t *addr_out) { uint8_t status; Loading @@ -129,6 +130,13 @@ parse_socks4a_resolve_response(const char *response, size_t len, } if (status != 90) { log_warn(LD_NET,"Got status response '%d': socks request failed.", status); if (!strcasecmpend(hostname, ".onion")) { log_warn(LD_NET, "%s is a hidden service; those don't have IP addresses. " "To connect to a hidden service, you need to send the hostname " "to Tor; we suggest an application that uses SOCKS 4a.",hostname); return -1; } return -1; } Loading Loading @@ -241,7 +249,8 @@ do_resolve(const char *hostname, uint32_t sockshost, uint16_t socksport, log_err(LD_NET, "Error reading SOCKS4 response."); return -1; } if (parse_socks4a_resolve_response(reply_buf, RESPONSE_LEN_4, if (parse_socks4a_resolve_response(hostname, reply_buf, RESPONSE_LEN_4, result_addr)<0){ return -1; } Loading @@ -260,6 +269,13 @@ do_resolve(const char *hostname, uint32_t sockshost, uint16_t socksport, log_warn(LD_NET,"Got SOCKS5 status response '%u': %s", (unsigned)reply_buf[1], socks5_reason_to_string(reply_buf[1])); if (reply_buf[1] == 4 && !strcasecmpend(hostname, ".onion")) { log_warn(LD_NET, "%s is a hidden service; those don't have IP addresses. " "To connect to a hidden service, you need to send the hostname " "to Tor; we suggest an application that uses SOCKS 4a.", hostname); } return -1; } if (reply_buf[3] == 1) { Loading Loading @@ -396,14 +412,6 @@ main(int argc, char **argv) usage(); } if (!strcasecmpend(arg[0], ".onion") && !force) { fprintf(stderr, "%s is a hidden service; those don't have IP addresses.\n\n" "To connect to a hidden service, you need to send the hostname\n" "to Tor; we suggest an application that uses SOCKS 4a.\n", arg[0]); return 1; } if (network_init()<0) { log_err(LD_BUG,"Error initializing network; exiting."); return 1; Loading Loading
ChangeLog +2 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,8 @@ Changes in version 0.2.1.16-?? - 2009-??-?? o Minor features: - Update to the "June 3 2009" ip-to-country file. - Do not have tor-resolve automatically refuse all .onion addresses; if AutomapHostsOnResolve is set, this will work fine. o Minor bugfixes (on 0.2.0.x): - Log correct error messages for DNS-related network errors on Loading
src/tools/tor-resolve.c +18 −10 Original line number Diff line number Diff line Loading @@ -107,7 +107,8 @@ build_socks_resolve_request(char **out, * Return 0 on success, -1 on error. */ static int parse_socks4a_resolve_response(const char *response, size_t len, parse_socks4a_resolve_response(const char *hostname, const char *response, size_t len, uint32_t *addr_out) { uint8_t status; Loading @@ -129,6 +130,13 @@ parse_socks4a_resolve_response(const char *response, size_t len, } if (status != 90) { log_warn(LD_NET,"Got status response '%d': socks request failed.", status); if (!strcasecmpend(hostname, ".onion")) { log_warn(LD_NET, "%s is a hidden service; those don't have IP addresses. " "To connect to a hidden service, you need to send the hostname " "to Tor; we suggest an application that uses SOCKS 4a.",hostname); return -1; } return -1; } Loading Loading @@ -241,7 +249,8 @@ do_resolve(const char *hostname, uint32_t sockshost, uint16_t socksport, log_err(LD_NET, "Error reading SOCKS4 response."); return -1; } if (parse_socks4a_resolve_response(reply_buf, RESPONSE_LEN_4, if (parse_socks4a_resolve_response(hostname, reply_buf, RESPONSE_LEN_4, result_addr)<0){ return -1; } Loading @@ -260,6 +269,13 @@ do_resolve(const char *hostname, uint32_t sockshost, uint16_t socksport, log_warn(LD_NET,"Got SOCKS5 status response '%u': %s", (unsigned)reply_buf[1], socks5_reason_to_string(reply_buf[1])); if (reply_buf[1] == 4 && !strcasecmpend(hostname, ".onion")) { log_warn(LD_NET, "%s is a hidden service; those don't have IP addresses. " "To connect to a hidden service, you need to send the hostname " "to Tor; we suggest an application that uses SOCKS 4a.", hostname); } return -1; } if (reply_buf[3] == 1) { Loading Loading @@ -396,14 +412,6 @@ main(int argc, char **argv) usage(); } if (!strcasecmpend(arg[0], ".onion") && !force) { fprintf(stderr, "%s is a hidden service; those don't have IP addresses.\n\n" "To connect to a hidden service, you need to send the hostname\n" "to Tor; we suggest an application that uses SOCKS 4a.\n", arg[0]); return 1; } if (network_init()<0) { log_err(LD_BUG,"Error initializing network; exiting."); return 1; Loading