[ 
https://issues.apache.org/jira/browse/DIRMINA-1123?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17084160#comment-17084160
 ] 

Marcin L commented on DIRMINA-1123:
-----------------------------------

Wow this was fast ;).

Let's skip the theory and go straight to practice. I created a simple 
NioAcceptor / NioConnector application and created a TCP dumps. The buffers are 
set immediately after object creation e.g.



NioSocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.getSessionConfig().setReceiveBufferSize(65535 * 2);

NioSocketConnector connector = new NioSocketConnector();
connector.getSessionConfig().setReceiveBufferSize(65535 * 3);

 

*Case 1*

- no connector receive buffer set
- no acceptor receive buffer set

Connector SYN packet looks correct WS = 256 (Windows default, max 16MB)
Acceptor SYN/ACK packet looks bad WS = 256 (Windows default, max 16MB)

This is correct behaviour.

*Case 2 (unmodified mina code base)*

- nio connector receive buffer 192kb
- nio acceptor receive buffer 128kb

Connector SYN packet looks correct WS = 4 (max window size can be increasted up 
to 256kb)
Acceptor SYN/ACK packet looks wrong WS = 256 (windows default, max 16MB)


This is wrong. Server advertises bad WS.

*Case 3*

Added a small code change in as proof of concept

org.apache.mina.transport.socket.nio.NioSocketAcceptor#open

if (sessionConfig instanceof SocketSessionConfig) {
 SocketSessionConfig socketSessionConfig = (SocketSessionConfig) sessionConfig;
 if (socketSessionConfig.getReceiveBufferSize() > 65535) {
 socket.setReceiveBufferSize(socketSessionConfig.getReceiveBufferSize());
 }
}

Connector, receive buffer = 192kb
Acceptor, receive buffer = 128kb

Connector SYN packet looks correct WS = 4 (max window size can be increased up 
to 256kb)
Acceptor SYN/ACK packet looks correct WS = 2 (max window size can be increased 
up to 120kb)

Acceptor window scale now looks correct.


I will look into the code because this setting does not seem to be propagand as 
state in your comment. TCP dumps attached.

> Receive buffer size is never set for NIO acceptor
> -------------------------------------------------
>
>                 Key: DIRMINA-1123
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-1123
>             Project: MINA
>          Issue Type: Bug
>          Components: Transport
>    Affects Versions: 2.0.22, 2.1.3
>            Reporter: Marcin L
>            Assignee: Jonathan Valliere
>            Priority: Minor
>
> Acceptor window size can't be increased beyond OS defaults.
> It seems the receive buffer size is properly set for 
> org.apache.mina.transport.socket.nio.NioSocketConnector, but it is not set at 
> all for org.apache.mina.transport.socket.nio.NioSocketAcceptor before socket 
> is bound.
> org.apache.mina.core.polling.AbstractPollingIoAcceptor.Acceptor#registerHandles
>  comment states that receive buffer size should be initialised, but then 
> org.apache.mina.transport.socket.nio.NioSocketAcceptor#open does not do it.,



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to