This is an automated email from the ASF dual-hosted git repository.

rmaucher pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit db19544305725be2e4158c85d14b35e840ab9ec3
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 30268ed155..50a691cf01 100644
--- a/java/org/apache/catalina/ha/backend/LocalStrings.properties
+++ b/java/org/apache/catalina/ha/backend/LocalStrings.properties
@@ -20,6 +20,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]

Reply via email to