diff options
Diffstat (limited to 'src/common/address.c')
-rw-r--r-- | src/common/address.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/common/address.c b/src/common/address.c index e3c2521235..3e26576815 100644 --- a/src/common/address.c +++ b/src/common/address.c @@ -1542,8 +1542,16 @@ get_interface_address6_via_udp_socket_hack(int severity, goto err; } - tor_addr_from_sockaddr(addr, (struct sockaddr*)&my_addr, NULL); - r=0; + if (tor_addr_from_sockaddr(addr, (struct sockaddr*)&my_addr, NULL) == 0) { + if (tor_addr_is_loopback(addr) || tor_addr_is_multicast(addr)) { + log_fn(severity, LD_NET, "Address that we determined via UDP socket" + " magic is unsuitable for public comms."); + } + else { + r=0; + } + } + err: if (sock >= 0) tor_close_socket(sock); |