You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2026/03/19 11:59:29 UTC

(camel) branch fix-as2-serversocket-reuseaddress created (now 8ab02f1df0a3)

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

gnodet pushed a change to branch fix-as2-serversocket-reuseaddress
in repository https://gitbox.apache.org/repos/asf/camel.git


      at 8ab02f1df0a3 Set setReuseAddress(true) on AS2 server sockets

This branch includes the following new commits:

     new 8ab02f1df0a3 Set setReuseAddress(true) on AS2 server sockets

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(camel) 01/01: Set setReuseAddress(true) on AS2 server sockets

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch fix-as2-serversocket-reuseaddress
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 8ab02f1df0a3b2629a24f77cbbeb5becc71f7dae
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Mar 19 12:59:14 2026 +0100

    Set setReuseAddress(true) on AS2 server sockets
    
    Without setReuseAddress(true), restarting the AS2 server quickly can
    cause BindException due to TCP TIME_WAIT state on the port. Fix by
    creating unbound sockets, setting setReuseAddress(true), then binding.
    
    Co-Authored-By: Claude Opus 4.6 <no...@anthropic.com>
---
 .../camel/component/as2/api/AS2AsyncMDNServerConnection.java      | 8 ++++++--
 .../org/apache/camel/component/as2/api/AS2ServerConnection.java   | 8 ++++++--
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnection.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnection.java
index ac5be366f896..ae7ec4bb3a53 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnection.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2AsyncMDNServerConnection.java
@@ -123,10 +123,14 @@ public class AS2AsyncMDNServerConnection {
         public RequestListenerThread(int port, SSLContext sslContext) throws IOException {
             setName(REQUEST_LISTENER_THREAD_NAME_PREFIX + port);
             if (sslContext == null) {
-                serverSocket = new ServerSocket(port);
+                serverSocket = new ServerSocket();
+                serverSocket.setReuseAddress(true);
+                serverSocket.bind(new java.net.InetSocketAddress(port));
             } else {
                 SSLServerSocketFactory factory = sslContext.getServerSocketFactory();
-                serverSocket = factory.createServerSocket(port);
+                serverSocket = factory.createServerSocket();
+                serverSocket.setReuseAddress(true);
+                serverSocket.bind(new java.net.InetSocketAddress(port));
             }
             HttpProcessor httpProcessor = HttpProcessorBuilder.create()
                     .add(new ResponseContent(true))
diff --git a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
index 7a700e01121a..1f3bfb4a7ee7 100644
--- a/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
+++ b/components/camel-as2/camel-as2-api/src/main/java/org/apache/camel/component/as2/api/AS2ServerConnection.java
@@ -440,10 +440,14 @@ public class AS2ServerConnection {
             this.service = service;
 
             if (sslContext == null) {
-                serversocket = new ServerSocket(port);
+                serversocket = new ServerSocket();
+                serversocket.setReuseAddress(true);
+                serversocket.bind(new java.net.InetSocketAddress(port));
             } else {
                 SSLServerSocketFactory factory = sslContext.getServerSocketFactory();
-                serversocket = factory.createServerSocket(port);
+                serversocket = factory.createServerSocket();
+                serversocket.setReuseAddress(true);
+                serversocket.bind(new java.net.InetSocketAddress(port));
             }
         }