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

markt-asf pushed a commit to branch 11.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/11.0.x by this push:
     new 42ea37de6a Further error handling improvements
42ea37de6a is described below

commit 42ea37de6a05d9bc67b43e7ce0c4f712904cb028
Author: Mark Thomas <[email protected]>
AuthorDate: Wed Jun 24 18:38:14 2026 +0100

    Further error handling improvements
---
 .../apache/catalina/ha/backend/LocalStrings.properties   |  2 ++
 java/org/apache/catalina/ha/backend/TcpSender.java       | 16 ++++++++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/java/org/apache/catalina/ha/backend/LocalStrings.properties 
b/java/org/apache/catalina/ha/backend/LocalStrings.properties
index 1190dc1fcf..a451110707 100644
--- a/java/org/apache/catalina/ha/backend/LocalStrings.properties
+++ b/java/org/apache/catalina/ha/backend/LocalStrings.properties
@@ -28,6 +28,8 @@ multiCastSender.multiCastFailed=Unable to use multicast
 multiCastSender.sendFailed=Unable to send multicast message
 
 tcpSender.connectionFailed=Unable to connect to proxy
+tcpSender.invalidContentLength=Unable to parse content length [{0}]
+tcpSender.invalidHeaderLine=Unable to parse header line [{0}]
 tcpSender.invalidProxyList=Invalid proxy list
 tcpSender.notInitialized=Not initialized
 tcpSender.readError=Error reading response content
diff --git a/java/org/apache/catalina/ha/backend/TcpSender.java 
b/java/org/apache/catalina/ha/backend/TcpSender.java
index 9f80ea7f2b..10b64cf8bb 100644
--- a/java/org/apache/catalina/ha/backend/TcpSender.java
+++ b/java/org/apache/catalina/ha/backend/TcpSender.java
@@ -177,7 +177,7 @@ public class TcpSender implements Sender {
                     // Ignore
                 }
                 if (status != 200) {
-                    log.error(sm.getString("tcpSender.responseErrorCode", 
Integer.valueOf(status)));
+                    log.error(sm.getString("tcpSender.responseErrorCode", 
responseStatus));
                     close(i);
                     continue;
                 }
@@ -191,8 +191,20 @@ public class TcpSender implements Sender {
                         String headerName = header.substring(0, colon).trim();
                         String headerValue = header.substring(colon + 
1).trim();
                         if ("content-length".equalsIgnoreCase(headerName)) {
-                            contentLength = Integer.parseInt(headerValue);
+                            try {
+                                contentLength = Integer.parseInt(headerValue);
+                            } catch (NumberFormatException e) {
+                                
log.error(sm.getString("tcpSender.invalidContentLength", headerValue));
+                                close(i);
+                                break;
+                            }
                         }
+                    } else {
+                        log.error(sm.getString("tcpSender.invalidHeaderLine", 
header));
+                        close(i);
+                        // Clear any content length if one has been read.
+                        contentLength = 0;
+                        break;
                     }
                     header = connectionReaders[i].readLine();
                 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to