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

Anton Vinokurov edited comment on DIRMINA-996 at 6/4/19 6:05 PM:
-----------------------------------------------------------------

I've just tested the method suggested by Paul. With a single session cache in 
the instance of IoSessionRecycler I hit the same issue: only a first (wrong) 
session is matched due to misuse of receiver socket information.

However if I subclass IoSessionRecycler and apply two different instances to 
two acceptors, it works good:

{{acceptor_auth = new NioDatagramAcceptor();}}
acceptor_auth.setHandler(new RadiusServerHandler());
acceptor_auth.setSessionRecycler(new MyIoSessionRecycler());
 {{acceptor_acct = new NioDatagramAcceptor();}}
acceptor_acct.setHandler(new RadiusServerHandler());
acceptor_acct.setSessionRecycler(new MyIoSessionRecycler());
 {{try {}}
 {{  acceptor_auth.bind(new InetSocketAddress(1812));}}
 {{  acceptor_acct.bind(new InetSocketAddress(1813));}}
} catch (IOException e) {}}
 {{  e.printStackTrace();}}
}

{{...}}

{{class MyIoSessionRecycler implements IoSessionRecycler {...}}}

 


was (Author: antonvn):
I've just tested the method suggested by Paul. With a single session cache in 
the instance of IoSessionRecycler I hit the same issue: only a first (wrong) 
session is matched due to misuse of receiver socket information.

However if I subclass IoSessionRecycler and apply two different instances to 
two acceptors, it works good:

{{acceptor_auth = new NioDatagramAcceptor();}}
{{ acceptor_auth.setHandler(new RadiusServerHandler());}}
{{ acceptor_auth.setSessionRecycler(new MyIoSessionRecycler());}}
{{acceptor_acct = new NioDatagramAcceptor();}}
{{ acceptor_acct.setHandler(new RadiusServerHandler());}}
{{ acceptor_acct.setSessionRecycler(new MyIoSessionRecycler());}}
{{try {}}
{{  acceptor_auth.bind(new InetSocketAddress(1812));}}
{{  acceptor_acct.bind(new InetSocketAddress(1813));}}
{{ } catch (IOException e) {}}
{{  e.printStackTrace();}}
{{ }}}

{{...}}{{ }}

{{class MyIoSessionRecycler implements IoSessionRecycler \{...}}}

 

> IoSessionRecycler RemoteAddress Collision
> -----------------------------------------
>
>                 Key: DIRMINA-996
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-996
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0.7
>            Reporter: Flavio Battimo
>            Assignee: Jonathan Valliere
>            Priority: Critical
>             Fix For: 2.1.4
>
>
> When using NioDatagramAcceptor with multiple binded local addresses the 
> IoSessionRecycler is not working as expected.
> If the acceptor has been prefilled with two sessions:
> remoteaddr=192.168.1.10:2001 localaddr=192.168.1.20:1000
> remoteaddr=192.168.1.10:2001 localaddr=192.168.1.20:1001
> so with same remote address but different local address, when the recycle 
> method of IoSessionRecycler interface is called only remote address is 
> passed. The recycler returns the same IoSession for incoming datagrams on two 
> different local addresses of the same acceptor.
> The IoSessionRecycler should have the local address parameter also in order 
> to find the correct IoSession.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to