From 9b575bf7788af975dd1b60f394606f2aadab001b Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Fri, 14 Nov 2025 13:00:13 +0100 Subject: [PATCH] openvidu-server: capture spring initialization error and better inform of port issues --- .../io/openvidu/server/OpenViduServer.java | 17 +++++++-- .../server/config/OpenviduConfig.java | 36 +++++++++---------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java b/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java index 3d6f07777..fd1de8616 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java +++ b/openvidu-server/src/main/java/io/openvidu/server/OpenViduServer.java @@ -302,8 +302,21 @@ public class OpenViduServer implements JsonRpcConfigurer { argsAux[argsAux.length - 2] = "--spring.main.banner-mode=off"; argsAux[argsAux.length - 1] = "--spring.main.allow-circular-references=true"; - SpringApplication.run(OpenViduServer.class, argsAux); - + try { + SpringApplication.run(OpenViduServer.class, argsAux); + } catch (org.springframework.context.ApplicationContextException e) { + Throwable rootCause = e; + while (rootCause.getCause() != null) { + rootCause = rootCause.getCause(); + } + if (rootCause instanceof java.net.BindException) { + log.error("Cannot start OpenVidu Server on port {}: {}." + + " You can modify the port used by OpenVidu Server with the 'HTTPS_PORT' configuration property.", + System.getProperty("server.port"), rootCause.getMessage()); + } else { + throw e; + } + } } public static Map checkConfigProperties(Class configClass) throws InterruptedException { diff --git a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java index 77ce4b67e..7728fe10b 100644 --- a/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java +++ b/openvidu-server/src/main/java/io/openvidu/server/config/OpenviduConfig.java @@ -429,23 +429,23 @@ public class OpenviduConfig { public Set getRolesFromRecordingNotification() { Set roles = new HashSet<>(); switch (this.openviduRecordingNotification) { - case none: - break; - case moderator: - roles.add(OpenViduRole.MODERATOR); - break; - case publisher_moderator: - roles.add(OpenViduRole.PUBLISHER); - roles.add(OpenViduRole.MODERATOR); - break; - case all: - roles.add(OpenViduRole.SUBSCRIBER); - roles.add(OpenViduRole.PUBLISHER); - roles.add(OpenViduRole.MODERATOR); - break; - default: - roles.add(OpenViduRole.PUBLISHER); - roles.add(OpenViduRole.MODERATOR); + case none: + break; + case moderator: + roles.add(OpenViduRole.MODERATOR); + break; + case publisher_moderator: + roles.add(OpenViduRole.PUBLISHER); + roles.add(OpenViduRole.MODERATOR); + break; + case all: + roles.add(OpenViduRole.SUBSCRIBER); + roles.add(OpenViduRole.PUBLISHER); + roles.add(OpenViduRole.MODERATOR); + break; + default: + roles.add(OpenViduRole.PUBLISHER); + roles.add(OpenViduRole.MODERATOR); } return roles; } @@ -677,7 +677,7 @@ public class OpenviduConfig { try { URI finalUri = new URI(this.getFinalUrl()); this.coturnIp = finalUri.getHost(); - } catch (URISyntaxException e) { + } catch (Exception e) { log.error("Can't get Domain name from OpenVidu public Url: " + e.getMessage()); } }