From ec842078a2fba249f2921ce3ece60dae6e77449c Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Tue, 24 Aug 2021 16:18:34 -0500 Subject: [PATCH] Issue #6661 - Make ServerConnector socket options setting optional --- .../eclipse/jetty/server/ServerConnector.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java index 25592a2260d0..8375c898f5d9 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java @@ -19,6 +19,7 @@ import java.net.ServerSocket; import java.net.Socket; import java.net.SocketException; +import java.net.SocketOption; import java.net.StandardSocketOptions; import java.nio.channels.Channel; import java.nio.channels.SelectableChannel; @@ -332,10 +333,10 @@ protected ServerSocketChannel openAcceptChannel() throws IOException { InetSocketAddress bindAddress = getHost() == null ? new InetSocketAddress(getPort()) : new InetSocketAddress(getHost(), getPort()); serverChannel = ServerSocketChannel.open(); + setSocketOption(serverChannel, StandardSocketOptions.SO_REUSEADDR, getReuseAddress()); + setSocketOption(serverChannel, StandardSocketOptions.SO_REUSEPORT, isReusePort()); try { - serverChannel.setOption(StandardSocketOptions.SO_REUSEADDR, getReuseAddress()); - serverChannel.setOption(StandardSocketOptions.SO_REUSEPORT, isReusePort()); serverChannel.bind(bindAddress, getAcceptQueueSize()); } catch (Throwable e) @@ -348,6 +349,18 @@ protected ServerSocketChannel openAcceptChannel() throws IOException return serverChannel; } + private void setSocketOption(ServerSocketChannel channel, SocketOption name, T value) + { + try + { + channel.setOption(name, value); + } + catch (Throwable t) + { + LOG.warn("Unable to set socket option {} to {}", name, value, t); + } + } + @Override public void close() {