Configures the SND/RCV socket buffer before bind()
diff --git a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
index f011ca1..5090d78 100644
--- a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
+++ b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
@@ -23,6 +23,7 @@
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.SocketAddress;
+import java.net.StandardSocketOptions;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.nio.channels.ServerSocketChannel;
@@ -40,6 +41,7 @@
import org.apache.mina.core.service.TransportMetadata;
import org.apache.mina.transport.socket.DefaultSocketSessionConfig;
import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.SocketSessionConfig;
/**
* {@link IoAcceptor} for socket transport (TCP/IP). This class
@@ -226,6 +228,8 @@
protected ServerSocketChannel open(SocketAddress localAddress) throws Exception {
// Creates the listening ServerSocket
+ SocketSessionConfig config = this.getSessionConfig();
+
ServerSocketChannel channel = null;
if (selectorProvider != null) {
@@ -245,6 +249,16 @@
// Set the reuseAddress flag accordingly with the setting
socket.setReuseAddress(isReuseAddress());
+
+ // Set the SND BUFF
+ if (config.getSendBufferSize() != -1) {
+ channel.setOption(StandardSocketOptions.SO_SNDBUF, config.getSendBufferSize());
+ }
+
+ // Set the RCV BUFF
+ if (config.getReceiveBufferSize() != -1) {
+ channel.setOption(StandardSocketOptions.SO_RCVBUF, config.getReceiveBufferSize());
+ }
// and bind.
try {