commit 7a2fe935293fa50d7a9db0897450ba1e24f758af
parent 92fc0d36998d685fe5b7143838283d50c6126d18
Author: Nick Mathewson <nickm@torproject.org>
Date: Tue, 21 Jul 2020 09:03:38 -0400
Merge remote-tracking branch 'tor-gitlab/mr/70'
Diffstat:
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
@@ -2032,6 +2032,7 @@ router_build_fresh_unsigned_routerinfo,(routerinfo_t **ri_out))
int hibernating = we_are_hibernating();
const or_options_t *options = get_options();
int result = TOR_ROUTERINFO_ERROR_INTERNAL_BUG;
+ uint16_t ipv6_orport = 0;
if (BUG(!ri_out)) {
result = TOR_ROUTERINFO_ERROR_INTERNAL_BUG;
@@ -2067,10 +2068,13 @@ router_build_fresh_unsigned_routerinfo,(routerinfo_t **ri_out))
ri->ipv4_orport = router_get_advertised_or_port_by_af(options, AF_INET);
ri->ipv4_dirport = router_get_advertised_dir_port(options, 0);
- /* IPv6. */
- if (have_v6) {
+ /* IPv6. Do not publish an IPv6 if we don't have an ORPort that can be used
+ * with the address. This is possible for instance if the ORPort is
+ * IPv4Only. */
+ ipv6_orport = router_get_advertised_or_port_by_af(options, AF_INET6);
+ if (have_v6 && ipv6_orport != 0) {
tor_addr_copy(&ri->ipv6_addr, &ipv6_addr);
- ri->ipv6_orport = router_get_advertised_or_port_by_af(options, AF_INET6);
+ ri->ipv6_orport = ipv6_orport;
}
ri->supports_tunnelled_dir_requests =