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

Emmanuel Lécharny commented on DIRMINA-1172:
--------------------------------------------

Ok, it can't be a problem with the session recycler. We store the SocketAddress 
in the cache, and it contains the port.

 

I'll check with the code you pushed to reproduce it, and see what's the root 
cause.

> Multiple DatagramAcceptors and the creation of a session object
> ---------------------------------------------------------------
>
>                 Key: DIRMINA-1172
>                 URL: https://issues.apache.org/jira/browse/DIRMINA-1172
>             Project: MINA
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.1.5
>            Reporter: Alexander B
>            Priority: Major
>         Attachments: UDPTest4.java
>
>
> Hello,
> I am using two independently created NioDatagramAcceptors, which are created 
> by the following code :
> {code:java}
> AbstractIoService inputSource = new NioDatagramAcceptor();
> ((NioDatagramAcceptor) inputSource).getSessionConfig().setReuseAddress(true);
> DefaultIoFilterChainBuilder filterChainBuilderUDP = 
> ((NioDatagramAcceptor)inputSource).getFilterChain();
> filterChainBuilderUDP.addLast("logger", new LoggingFilter());
> ((NioDatagramAcceptor) 
> inputSource).getSessionConfig().setIdleTime(IdleStatus.READER_IDLE, 
> getIdleTimeout());
> ((NioDatagramAcceptor) inputSource).setHandler(this);
> try {
>       ((NioDatagramAcceptor)inputSource).bind(new InetSocketAddress(port));
> } catch (IOException e) {
>       log.error("Failed to connect {}", e);
> }
> {code}
> One Acceptor is listening on port 9800, the other one on 9801. If I now send 
> UDP packages (from a external application) to both ports (independently). It 
> seems, that both UDP port are "connected" to the same session.
> Information: The external app is sending:
> Message "TEST_1 <timestamp>" just to port 9800
> Message "TEST_2 <timestamp>" just to port 9801
> The overwritten method messageReceived will give the following output:
> {code:java}
> public void messageReceived(IoSession session, Object message) throws 
> Exception {
>       String msgStr = message.toString();
>       log.info("SessionId:" + session.getId() + " " + msgStr);
> }
> {code}
> 2023-04-19_11:47:35.035 [NioDatagramAcceptor-2] INFO - SessionId:1 TEST_1 
> 1681904855701
> 2023-04-19_11:47:35.035 [NioDatagramAcceptor-3] INFO - SessionId:1 TEST_2 
> 1681904855701
> So, both messages (for port 9800 and port 9801) are received by SessionId1. 
> If I do exactly the same with `NioSocketConnector`, I can see two different 
> sessions, such that both messages are handled independently:
> 2023-04-19_11:44:35.725 [NioProcessor-11] INFO - SessionId:1 TEST_1 
> 1681904875701
> 2023-04-19_11:44:37.754 [NioProcessor-15] INFO - SessionId:2 TEST_2 
> 1681904875701
> Is there anything I did not mention in the context of UDP/DatagramAcceptor? 
> Or is there any setting, such that DatagramAcceptors can create/handle their 
> own session objects?



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to