aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2006-09-22 00:10:26 +0000
committerNick Mathewson <nickm@torproject.org>2006-09-22 00:10:26 +0000
commit29a756af8edfed32bb1307824f9d3f5bd80c6f3b (patch)
treef04224538253e1845128f0921e5a8f0c5868a140 /src
parent63395c747c97a180ea1f1c107609e57e6a9c9082 (diff)
downloadtor-29a756af8edfed32bb1307824f9d3f5bd80c6f3b.tar
tor-29a756af8edfed32bb1307824f9d3f5bd80c6f3b.tar.gz
Fix a couple of server-side reverse dns bugs
svn:r8449
Diffstat (limited to 'src')
-rw-r--r--src/or/dns.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/or/dns.c b/src/or/dns.c
index 6f7bccecb..baf89b655 100644
--- a/src/or/dns.c
+++ b/src/or/dns.c
@@ -420,6 +420,7 @@ send_resolved_cell(edge_connection_t *conn, uint8_t answer_type)
tor_assert(0);
return;
}
+ // log_notice(LD_EXIT, "Sending a regular RESOLVED reply: ");
connection_edge_send_command(conn, circuit_get_by_edge_conn(conn),
RELAY_COMMAND_RESOLVED, buf, buflen,
conn->cpath_layer);
@@ -446,9 +447,11 @@ send_resolved_hostname_cell(edge_connection_t *conn, const char *hostname)
set_uint32(buf+2+namelen, htonl(ttl));
buflen = 2+namelen+4;
+ // log_notice(LD_EXIT, "Sending a reply RESOLVED reply: %s", hostname);
connection_edge_send_command(conn, circuit_get_by_edge_conn(conn),
RELAY_COMMAND_RESOLVED, buf, buflen,
conn->cpath_layer);
+ // log_notice(LD_EXIT, "Sent");
}
/** Given a lower-case <b>address</b>, check to see whether it's a
@@ -473,7 +476,7 @@ parse_inaddr_arpa_address(const char *address, struct in_addr *in)
if (len >= INET_NTOA_BUF_LEN)
return -1; /* Too long. */
- memcpy(buf, cp, len);
+ memcpy(buf, address, len);
buf[len] = '\0';
if (tor_inet_aton(buf, &inaddr) == 0)
return -1; /* malformed. */
@@ -571,6 +574,8 @@ dns_resolve(edge_connection_t *exitconn)
connection_free(TO_CONN(exitconn));
return -1;
}
+ //log_notice(LD_EXIT, "Looks like an address %s",
+// exitconn->_base.address);
}
/* now check the hash table to see if 'address' is already there. */
@@ -809,11 +814,16 @@ add_answer_to_cache(const char *address, int is_reverse, uint32_t addr,
if (outcome == DNS_RESOLVE_FAILED_TRANSIENT)
return;
+ //log_notice(LD_EXIT, "Adding to cache: %s -> %s (%lx, %s), %d",
+ // address, is_reverse?"(reverse)":"", (unsigned long)addr,
+ // hostname?hostname:"NULL",(int)outcome);
+
resolve = tor_malloc_zero(sizeof(cached_resolve_t));
resolve->magic = CACHED_RESOLVE_MAGIC;
resolve->state = (outcome == DNS_RESOLVE_SUCCEEDED) ?
CACHE_STATE_CACHED_VALID : CACHE_STATE_CACHED_FAILED;
strlcpy(resolve->address, address, sizeof(resolve->address));
+ resolve->is_reverse = is_reverse;
if (is_reverse) {
tor_assert(hostname);
resolve->result.hostname = tor_strdup(hostname);
@@ -1494,6 +1504,7 @@ eventdns_callback(int result, char type, int count, int ttl, void *addresses,
char *escaped_address;
is_reverse = 1;
hostname = ((char**)addresses)[0];
+ status = DNS_RESOLVE_SUCCEEDED;
escaped_address = esc_for_log(string_address);
log_debug(LD_EXIT, "eventdns said that %s resolves to %s",
safe_str(escaped_address),