This is an automated email from the ASF dual-hosted git repository. rmaucher pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 78623e8f3f950423de95041bf91531b5ce1a12e4 Author: opencode <[email protected]> AuthorDate: Wed Sep 30 22:40:33 2026 +0200 Close the multicast socket in MultiCastSender when socket setup fails after creation to avoid leaking one socket per heartbeat and validate the TTL range in HeartbeatListener --- java/org/apache/catalina/ha/backend/HeartbeatListener.java | 5 +++++ java/org/apache/catalina/ha/backend/LocalStrings.properties | 1 + java/org/apache/catalina/ha/backend/MultiCastSender.java | 3 +++ 3 files changed, 9 insertions(+) diff --git a/java/org/apache/catalina/ha/backend/HeartbeatListener.java b/java/org/apache/catalina/ha/backend/HeartbeatListener.java index 0d3384ba14..c6dd59d01a 100644 --- a/java/org/apache/catalina/ha/backend/HeartbeatListener.java +++ b/java/org/apache/catalina/ha/backend/HeartbeatListener.java @@ -157,8 +157,13 @@ public class HeartbeatListener implements LifecycleListener { * Set the TTL for Multicast packets. * * @param ttl value for TTL. + * + * @throws IllegalArgumentException if the value is outside the valid range of 0 to 255 */ public void setTtl(int ttl) { + if (ttl < 0 || ttl > 255) { + throw new IllegalArgumentException(sm.getString("heartbeatListener.invalidTtl", Integer.valueOf(ttl))); + } this.ttl = ttl; } diff --git a/java/org/apache/catalina/ha/backend/LocalStrings.properties b/java/org/apache/catalina/ha/backend/LocalStrings.properties index ca6ddb004a..79b029d13a 100644 --- a/java/org/apache/catalina/ha/backend/LocalStrings.properties +++ b/java/org/apache/catalina/ha/backend/LocalStrings.properties @@ -17,6 +17,7 @@ collectedInfo.noConnector=Cannot find connector for [{0}]:[{1}] collectedInfo.notInitialized=Not initialized heartbeatListener.errorCollectingInfo=Unable to initialize info collection +heartbeatListener.invalidTtl=Invalid time-to-live value [{0}]. The value must be between 0 and 255. heartbeatListener.refreshError=Unable to collect load information heartbeatListener.sendError=Unable to send collected load information heartbeatListener.senderInitError=Unable to initialize Sender diff --git a/java/org/apache/catalina/ha/backend/MultiCastSender.java b/java/org/apache/catalina/ha/backend/MultiCastSender.java index 5bfa55d8ae..e8e19f642f 100644 --- a/java/org/apache/catalina/ha/backend/MultiCastSender.java +++ b/java/org/apache/catalina/ha/backend/MultiCastSender.java @@ -68,6 +68,9 @@ public class MultiCastSender implements Sender { s.joinGroup(new InetSocketAddress(group, 0), null); } catch (Exception e) { log.error(sm.getString("multiCastSender.multiCastFailed"), e); + if (s != null) { + s.close(); + } s = null; return -1; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
