From b0e5c9be009bf4b481144432b711e167d16ebc8b Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Thu, 26 Jun 2014 11:53:23 +0200 Subject: [PATCH] [#2605] Use SO_REUSEADDR on EpollServerSocketChannel to match defaults of java.nio.ServerSocketChannel impl Motivation: When using openjdk and oracle jdk's nio (while using the nio transport) the ServerSocketChannel uses SO_REUSEADDR by default. Our native transport should do the same to make it easier to switch between the different implementations and get the expected result. Modification: Change EpollServerSocketChannelConfig to set SO_REUSEADDR on the created socket. Result: SO_REUSEADDR is used by default on servers. --- .../netty/channel/epoll/EpollServerSocketChannelConfig.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollServerSocketChannelConfig.java b/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollServerSocketChannelConfig.java index 1f3f8e8c40..38c5f53c7f 100644 --- a/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollServerSocketChannelConfig.java +++ b/transport-native-epoll/src/main/java/io/netty/channel/epoll/EpollServerSocketChannelConfig.java @@ -38,6 +38,11 @@ public final class EpollServerSocketChannelConfig extends DefaultChannelConfig EpollServerSocketChannelConfig(EpollServerSocketChannel channel) { super(channel); this.channel = channel; + + // Use SO_REUSEADDR by default as java.nio does the same. + // + // See https://github.com/netty/netty/issues/2605 + setReuseAddress(true); } @Override