From: Roger Dingledine Date: Mon, 6 Dec 2004 06:06:13 +0000 (+0000) Subject: don't use cache for resolving .foo.exit names, but do reply immediately X-Git-Tag: tor-0.0.9rc6~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0859d09352fecddee8c9c12cd3e1ef6f46ad3a38;p=thirdparty%2Ftor.git don't use cache for resolving .foo.exit names, but do reply immediately if we're asked to resolve an IP.foo.exit. svn:r3085 --- diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index de17fce2ee..3fd7d67841 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -384,13 +384,17 @@ static int connection_ap_handshake_process_socks(connection_t *conn) { if (socks->command == SOCKS_COMMAND_RESOLVE) { uint32_t answer; + struct in_addr in; /* Reply to resolves immediately if we can. */ if (strlen(socks->address) > RELAY_PAYLOAD_SIZE) { log_fn(LOG_WARN,"Address to be resolved is too large. Failing."); connection_ap_handshake_socks_resolved(conn,RESOLVED_TYPE_ERROR,0,NULL); return -1; } - answer = htonl(client_dns_lookup_entry(socks->address)); + if (tor_inet_aton(socks->address, &in)) /* see if it's an IP already */ + answer = ntohl(in.s_addr); + if (!answer && !conn->chosen_exit_name) /* if it's not .exit, check cache */ + answer = htonl(client_dns_lookup_entry(socks->address)); if (answer) { connection_ap_handshake_socks_resolved(conn,RESOLVED_TYPE_IPV4,4, (char*)&answer);