mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Merge commit '110765f5564a588c5f019d32b5e6f66cc7806c41'
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
o Minor features:
|
||||
- When get_interface_address6_list(.,AF_UNSPEC,.) is called and fails
|
||||
to enumerate interface addresses using the platform-specific API,
|
||||
have it rely on the UDP socket fallback technique to try and find
|
||||
out what IP addresses (both IPv4 and IPv6) our machine has. Resolves
|
||||
ticket 17951.
|
||||
+23
-10
@@ -1547,8 +1547,9 @@ tor_addr_is_multicast(const tor_addr_t *a)
|
||||
}
|
||||
|
||||
/** Attempt to retrieve IP address of current host by utilizing some
|
||||
* UDP socket trickery. Only look for address of given <b>family</b>.
|
||||
* Set result to *<b>addr</b>. Return 0 on success, -1 on failure.
|
||||
* UDP socket trickery. Only look for address of given <b>family</b>
|
||||
* (only AF_INET and AF_INET6 are supported). Set result to *<b>addr</b>.
|
||||
* Return 0 on success, -1 on failure.
|
||||
*/
|
||||
MOCK_IMPL(int,
|
||||
get_interface_address6_via_udp_socket_hack,(int severity,
|
||||
@@ -1720,15 +1721,27 @@ MOCK_IMPL(smartlist_t *,get_interface_address6_list,(int severity,
|
||||
}
|
||||
|
||||
/* Okay, the smart way is out. */
|
||||
if (get_interface_address6_via_udp_socket_hack(severity,family,&addr))
|
||||
return smartlist_new();
|
||||
if (!include_internal && tor_addr_is_internal(&addr, 0)) {
|
||||
return smartlist_new();
|
||||
} else {
|
||||
addrs = smartlist_new();
|
||||
smartlist_add(addrs, tor_dup_addr(&addr));
|
||||
return addrs;
|
||||
addrs = smartlist_new();
|
||||
|
||||
if (family == AF_INET || family == AF_UNSPEC) {
|
||||
if (get_interface_address6_via_udp_socket_hack(severity,AF_INET,
|
||||
&addr) == 0) {
|
||||
if (include_internal || !tor_addr_is_internal(&addr, 0)) {
|
||||
smartlist_add(addrs, tor_dup_addr(&addr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (family == AF_INET6 || family == AF_UNSPEC) {
|
||||
if (get_interface_address6_via_udp_socket_hack(severity,AF_INET6,
|
||||
&addr) == 0) {
|
||||
if (include_internal || !tor_addr_is_internal(&addr, 0)) {
|
||||
smartlist_add(addrs, tor_dup_addr(&addr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return addrs;
|
||||
}
|
||||
|
||||
/* ======
|
||||
|
||||
Reference in New Issue
Block a user