[ https://issues.apache.org/jira/browse/DIRMINA-379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12592104#action_12592104 ]
vcdaniel edited comment on DIRMINA-379 at 4/24/08 9:05 AM: --------------------------------------------------------------- Yes, I think this could be the reason. I tried the following now: this.connector = new NioSocketConnector(thread_pool, new NioProcessor(thread_pool)); this.connector.getSessionConfig().setReuseAddress(true); etc. The exception is still thrown, so maybe the Mina SessionConfigImpl used in org.apache.mina.transport.socket.nio.NioSocketSession internally does not set ReuseAddress before KeepAlive as mentioned in the description you added. Maybe changing the internal order can fix it. I also suggest setting ReuseAddress by default to true, if it is not yet the default behaviour. ---- I took a look. The problem is located in org.apache.mina.transport.socket.AbstractSocketSessionConfig$doSetAll called by org.apache.mina.common.AbstractIoSessionConfig$setAll of course inherited by org.apache.mina.transport.socket.nio.NioSocketSession$SocketConfigImpl setKeepAlive(cfg.isKeepAlive()); setOobInline(cfg.isOobInline()); setReceiveBufferSize(cfg.getReceiveBufferSize()); setReuseAddress(cfg.isReuseAddress()); setSendBufferSize(cfg.getSendBufferSize()); setSoLinger(cfg.getSoLinger()); setTcpNoDelay(cfg.isTcpNoDelay()); in conjunction with private static boolean DEFAULT_REUSE_ADDRESS = false; in org.apache.mina.transport.socket.DefaultSocketSessionConfig was (Author: vcdaniel): Yes, I think this could be the reason. I tried the following now: this.connector = new NioSocketConnector(thread_pool, new NioProcessor(thread_pool)); this.connector.getSessionConfig().setReuseAddress(true); etc. The exception is still thrown, so maybe the Mina SessionConfigImpl used in org.apache.mina.transport.socket.nio.NioSocketSession internally does not set ReuseAddress before KeepAlive as mentioned in the description you added. Maybe changing the internal order can fix it. I also suggest setting ReuseAddress by default to true, if it is not yet the default behaviour. > setKeepAlive/setTcpNoDelay and exceptions in Windows Vista > ---------------------------------------------------------- > > Key: DIRMINA-379 > URL: https://issues.apache.org/jira/browse/DIRMINA-379 > Project: MINA > Issue Type: Bug > Components: Core > Affects Versions: 1.0.3, 1.1.0, 2.0.0-M1 > Environment: Windows Vista Home Premium Italian > Java SE 1.5.0_11, Java SE 1.6 Update 1, Java SE 1.4.2_12 > Reporter: Stefano Bagnara > Assignee: Trustin Lee > > When I ran my application under Vista I get this exception: > Exception in thread "Thread-4" org.apache.mina.common.RuntimeIOException: > java.net.SocketException: Invalid argument: sun.nio.ch.Net.setIntOption > at > org.apache.mina.transport.socket.nio.SocketSessionImpl$SessionConfigImpl.setKeepAlive(SocketSessionImpl.java:252) > at > org.apache.mina.transport.socket.nio.SocketSessionImpl.<init>(SocketSessionImpl.java:94) > at > org.apache.mina.transport.socket.nio.SocketConnector.newSession(SocketConnector.java:350) > at > org.apache.mina.transport.socket.nio.SocketConnector.processSessions(SocketConnector.java:290) > at > org.apache.mina.transport.socket.nio.SocketConnector.access$900(SocketConnector.java:53) > at > org.apache.mina.transport.socket.nio.SocketConnector$Worker.run(SocketConnector.java:395) > at > org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:43) > at java.lang.Thread.run(Thread.java:595) > Caused by: java.net.SocketException: Invalid argument: > sun.nio.ch.Net.setIntOption > at sun.nio.ch.Net.setIntOption0(Native Method) > at sun.nio.ch.Net.setIntOption(Net.java:152) > at sun.nio.ch.SocketChannelImpl$1.setInt(SocketChannelImpl.java:372) > at sun.nio.ch.SocketOptsImpl.setBoolean(SocketOptsImpl.java:38) > at sun.nio.ch.SocketOptsImpl.keepAlive(SocketOptsImpl.java:92) > at sun.nio.ch.OptionAdaptor.setKeepAlive(OptionAdaptor.java:139) > at sun.nio.ch.SocketAdaptor.setKeepAlive(SocketAdaptor.java:322) > at > org.apache.mina.transport.socket.nio.SocketSessionImpl$SessionConfigImpl.setKeepAlive(SocketSessionImpl.java:248) > ... 7 more > I had to remove the following lines from the SocketSessionImpl constructor: > this.config.setKeepAlive( cfg.isKeepAlive() ); > this.config.setTcpNoDelay( cfg.isTcpNoDelay() ); > and now it works. > No matter if I change the configuration to let them return true or false, I > keep getting the exception if I don't remove the call at all. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.