[
https://issues.apache.org/jira/browse/DIRMINA-379?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12592152#action_12592152
]
vcdaniel edited comment on DIRMINA-379 at 4/24/08 12:11 PM:
----------------------------------------------------------------
For 2.0.0-M1 the fix is:
Change
private static boolean DEFAULT_REUSE_ADDRESS = false;
to
private static boolean DEFAULT_REUSE_ADDRESS = true;
in socket.DefaultSocketSessionConfig
And change
setKeepAlive(cfg.isKeepAlive());
setOobInline(cfg.isOobInline());
setReceiveBufferSize(cfg.getReceiveBufferSize());
setReuseAddress(cfg.isReuseAddress());
to
setReuseAddress(cfg.isReuseAddress());
setKeepAlive(cfg.isKeepAlive());
setOobInline(cfg.isOobInline());
setReceiveBufferSize(cfg.getReceiveBufferSize());
in socket.AbstractSocketSessionConfig
Seems to work as far as I can tell. Unfortunately I'm neigher familar with the
1.x branch nor with diff but maybe you can create a patch accordingly. The
change applied to the default reuse behaviour is required, because the default
values are set before anyone is able to override them inside the
NioSessionConfig constructor.
Edit: Oh, just looked around the sources again: I may be wrong with the default
setting. But without changing it, the same app will work on xp/linux but not on
vista without setting ReuseAddress explicitly.
was (Author: vcdaniel):
For 2.0.0-M1 the fix is:
Change
private static boolean DEFAULT_REUSE_ADDRESS = false;
to
private static boolean DEFAULT_REUSE_ADDRESS = true;
in socket.DefaultSocketSessionConfig
And change
setKeepAlive(cfg.isKeepAlive());
setOobInline(cfg.isOobInline());
setReceiveBufferSize(cfg.getReceiveBufferSize());
setReuseAddress(cfg.isReuseAddress());
to
setReuseAddress(cfg.isReuseAddress());
setKeepAlive(cfg.isKeepAlive());
setOobInline(cfg.isOobInline());
setReceiveBufferSize(cfg.getReceiveBufferSize());
in socket.AbstractSocketSessionConfig
Seems to work as far as I can tell. Unfortunately I'm neigher familar with the
1.x branch nor with diff but maybe you can create a patch accordingly. The
change applied to the default reuse behaviour is required, because the default
values are set before anyone is able to override them inside the
NioSessionConfig constructor.
> 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.