diff --git a/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java b/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java index b1f67900..b9f3653e 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java +++ b/openvidu-server/src/main/java/io/openvidu/server/rest/SessionRestController.java @@ -21,6 +21,7 @@ import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.TimeUnit; @@ -844,18 +845,29 @@ public class SessionRestController { ConnectionType type = ConnectionProperties.fromJson(params).build().getType(); + // Check if custom ice servers are defined in params + boolean definedCustomIceServers = false; + if (ConnectionType.WEBRTC.equals(type)) { - if (params != null && params.get("customIceServers") == null - && !openviduConfig.getWebrtcIceServersBuilders().isEmpty()) { - // If not defined in Connection, check if defined in OpenVidu global config - for (IceServerProperties.Builder iceServerPropertiesBuilder : openviduConfig - .getWebrtcIceServersBuilders()) { - IceServerProperties.Builder configIceBuilder = iceServerPropertiesBuilder.clone(); - builder.addCustomIceServer(configIceBuilder.build()); + if (params != null) { + JsonArray customIceServersJsonArray = null; + if (params.get("customIceServers") != null) { + customIceServersJsonArray = new Gson().toJsonTree(params.get("customIceServers"), List.class) + .getAsJsonArray(); + definedCustomIceServers = customIceServersJsonArray.size() > 0; } } } + if (!definedCustomIceServers && !openviduConfig.getWebrtcIceServersBuilders().isEmpty()) { + // If not defined in Connection, check if defined in OpenVidu global config + for (IceServerProperties.Builder iceServerPropertiesBuilder : openviduConfig + .getWebrtcIceServersBuilders()) { + IceServerProperties.Builder configIceBuilder = iceServerPropertiesBuilder.clone(); + builder.addCustomIceServer(configIceBuilder.build()); + } + } + return builder; }