From 665a26d164b507207d9aebf7c8b4f12c957792c0 Mon Sep 17 00:00:00 2001 From: adel-signal Date: Fri, 23 Feb 2024 08:57:58 -0800 Subject: [PATCH] update call routing to return ipv6 ips in RFC3986 format --- .../calls/routing/TurnCallRouter.java | 6 +- .../calls/routing/TurnCallRouterTest.java | 56 +++++++++---------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/calls/routing/TurnCallRouter.java b/service/src/main/java/org/whispersystems/textsecuregcm/calls/routing/TurnCallRouter.java index 94055d84c..79f2ad3cc 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/calls/routing/TurnCallRouter.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/calls/routing/TurnCallRouter.java @@ -134,7 +134,11 @@ public class TurnCallRouter { ipv4Selection = ipv4Selection.stream().limit(limit - ipv6Selection.size()).toList(); } - return Stream.concat(ipv4Selection.stream(), ipv6Selection.stream()).map(InetAddress::getHostAddress).toList(); + return Stream.concat( + ipv4Selection.stream().map(InetAddress::getHostAddress), + // map ipv6 to RFC3986 format i.e. surrounded by brackets + ipv6Selection.stream().map(i -> String.format("[%s]", i.getHostAddress())) + ).toList(); } private static List getUrlsForInstances(List instanceIps) { diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/calls/routing/TurnCallRouterTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/calls/routing/TurnCallRouterTest.java index 56323fdee..48fae06f2 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/calls/routing/TurnCallRouterTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/calls/routing/TurnCallRouterTest.java @@ -165,20 +165,20 @@ public class TurnCallRouterTest { "turn:9.9.9.2:80?transport=tcp", "turns:9.9.9.2:443?transport=tcp", - "stun:2222:1111:0:abc2:0:0:0:0", - "turn:2222:1111:0:abc2:0:0:0:0", - "turn:2222:1111:0:abc2:0:0:0:0:80?transport=tcp", - "turns:2222:1111:0:abc2:0:0:0:0:443?transport=tcp", + "stun:[2222:1111:0:abc2:0:0:0:0]", + "turn:[2222:1111:0:abc2:0:0:0:0]", + "turn:[2222:1111:0:abc2:0:0:0:0]:80?transport=tcp", + "turns:[2222:1111:0:abc2:0:0:0:0]:443?transport=tcp", - "stun:2222:1111:0:abc0:0:0:0:0", - "turn:2222:1111:0:abc0:0:0:0:0", - "turn:2222:1111:0:abc0:0:0:0:0:80?transport=tcp", - "turns:2222:1111:0:abc0:0:0:0:0:443?transport=tcp", + "stun:[2222:1111:0:abc0:0:0:0:0]", + "turn:[2222:1111:0:abc0:0:0:0:0]", + "turn:[2222:1111:0:abc0:0:0:0:0]:80?transport=tcp", + "turns:[2222:1111:0:abc0:0:0:0:0]:443?transport=tcp", - "stun:2222:1111:0:abc1:0:0:0:0", - "turn:2222:1111:0:abc1:0:0:0:0", - "turn:2222:1111:0:abc1:0:0:0:0:80?transport=tcp", - "turns:2222:1111:0:abc1:0:0:0:0:443?transport=tcp" + "stun:[2222:1111:0:abc1:0:0:0:0]", + "turn:[2222:1111:0:abc1:0:0:0:0]", + "turn:[2222:1111:0:abc1:0:0:0:0]:80?transport=tcp", + "turns:[2222:1111:0:abc1:0:0:0:0]:443?transport=tcp" ))); } @@ -196,10 +196,10 @@ public class TurnCallRouterTest { "turn:1.1.1.1:80?transport=tcp", "turns:1.1.1.1:443?transport=tcp", - "stun:2222:1111:0:dead:0:0:0:0", - "turn:2222:1111:0:dead:0:0:0:0", - "turn:2222:1111:0:dead:0:0:0:0:80?transport=tcp", - "turns:2222:1111:0:dead:0:0:0:0:443?transport=tcp" + "stun:[2222:1111:0:dead:0:0:0:0]", + "turn:[2222:1111:0:dead:0:0:0:0]", + "turn:[2222:1111:0:dead:0:0:0:0]:80?transport=tcp", + "turns:[2222:1111:0:dead:0:0:0:0]:443?transport=tcp" ))); } @@ -225,20 +225,20 @@ public class TurnCallRouterTest { "turn:9.9.9.1:80?transport=tcp", "turns:9.9.9.1:443?transport=tcp", - "stun:2222:1111:0:abc3:0:0:0:0", - "turn:2222:1111:0:abc3:0:0:0:0", - "turn:2222:1111:0:abc3:0:0:0:0:80?transport=tcp", - "turns:2222:1111:0:abc3:0:0:0:0:443?transport=tcp", + "stun:[2222:1111:0:abc3:0:0:0:0]", + "turn:[2222:1111:0:abc3:0:0:0:0]", + "turn:[2222:1111:0:abc3:0:0:0:0]:80?transport=tcp", + "turns:[2222:1111:0:abc3:0:0:0:0]:443?transport=tcp", - "stun:2222:1111:0:abc2:0:0:0:0", - "turn:2222:1111:0:abc2:0:0:0:0", - "turn:2222:1111:0:abc2:0:0:0:0:80?transport=tcp", - "turns:2222:1111:0:abc2:0:0:0:0:443?transport=tcp", + "stun:[2222:1111:0:abc2:0:0:0:0]", + "turn:[2222:1111:0:abc2:0:0:0:0]", + "turn:[2222:1111:0:abc2:0:0:0:0]:80?transport=tcp", + "turns:[2222:1111:0:abc2:0:0:0:0]:443?transport=tcp", - "stun:2222:1111:0:abc0:0:0:0:0", - "turn:2222:1111:0:abc0:0:0:0:0", - "turn:2222:1111:0:abc0:0:0:0:0:80?transport=tcp", - "turns:2222:1111:0:abc0:0:0:0:0:443?transport=tcp" + "stun:[2222:1111:0:abc0:0:0:0:0]", + "turn:[2222:1111:0:abc0:0:0:0:0]", + "turn:[2222:1111:0:abc0:0:0:0:0]:80?transport=tcp", + "turns:[2222:1111:0:abc0:0:0:0:0]:443?transport=tcp" ))); }