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 <[email protected]> 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 <[email protected]> --- .../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)); } }
