aboutsummaryrefslogtreecommitdiff
path: root/src/or/relay.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-03-20 14:47:13 -0400
committerNick Mathewson <nickm@torproject.org>2013-03-20 14:47:13 -0400
commit34120549878aa05969b66d9564cdd902adeeb6be (patch)
tree614245aba5c6469a1e385aee16ad461ea20ea64e /src/or/relay.c
parent5c5198e713365fecf44741ae6f287c2ebdef18f6 (diff)
parent1b28f366b8796a9e6d27af74146dbc7836100263 (diff)
downloadtor-34120549878aa05969b66d9564cdd902adeeb6be.tar
tor-34120549878aa05969b66d9564cdd902adeeb6be.tar.gz
Merge remote-tracking branch 'public/bug8475_023' into maint-0.2.4
Diffstat (limited to 'src/or/relay.c')
-rw-r--r--src/or/relay.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/or/relay.c b/src/or/relay.c
index 1da993269..0ca3e56fd 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1140,12 +1140,15 @@ connection_edge_process_relay_cell_not_open(
2+answer_len));
else
ttl = -1;
- if (answer_type == RESOLVED_TYPE_IPV4 && answer_len == 4) {
- uint32_t addr = ntohl(get_uint32(cell->payload+RELAY_HEADER_SIZE+2));
- if (get_options()->ClientDNSRejectInternalAddresses &&
- is_internal_IP(addr, 0)) {
+ if (answer_type == RESOLVED_TYPE_IPV4 ||
+ answer_type == RESOLVED_TYPE_IPV6) {
+ tor_addr_t addr;
+ if (decode_address_from_payload(&addr, cell->payload+RELAY_HEADER_SIZE,
+ rh->length) &&
+ tor_addr_is_internal(&addr, 0) &&
+ get_options()->ClientDNSRejectInternalAddresses) {
log_info(LD_APP,"Got a resolve with answer %s. Rejecting.",
- fmt_addr32(addr));
+ fmt_addr(&addr));
connection_ap_handshake_socks_resolved(entry_conn,
RESOLVED_TYPE_ERROR_TRANSIENT,
0, NULL, 0, TIME_MAX);