aboutsummaryrefslogtreecommitdiff
path: root/src/feature/relay
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2020-07-21 09:03:38 -0400
committerNick Mathewson <nickm@torproject.org>2020-07-21 09:03:38 -0400
commit7a2fe935293fa50d7a9db0897450ba1e24f758af (patch)
tree81150e32ce729947d187bafc19240c1be6b0fb49 /src/feature/relay
parent92fc0d36998d685fe5b7143838283d50c6126d18 (diff)
parentfbee4d25cc5672cd9b4fb79a8cb17c7464053ef8 (diff)
downloadtor-7a2fe935293fa50d7a9db0897450ba1e24f758af.tar.gz
tor-7a2fe935293fa50d7a9db0897450ba1e24f758af.zip
Merge remote-tracking branch 'tor-gitlab/mr/70'
Diffstat (limited to 'src/feature/relay')
-rw-r--r--src/feature/relay/router.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/feature/relay/router.c b/src/feature/relay/router.c
index b75241160f..c2b01a641d 100644
--- 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 =