[
https://issues.apache.org/jira/browse/DIRMINA-419?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Emmanuel Lecharny closed DIRMINA-419.
-------------------------------------
Resolution: Fixed
2 years old issue, 5 versions ago... Let's close it.
> about the Proxy example
> -----------------------
>
> Key: DIRMINA-419
> URL: https://issues.apache.org/jira/browse/DIRMINA-419
> Project: MINA
> Issue Type: Bug
> Components: Example
> Affects Versions: 1.1.2
> Reporter: im-james
>
> I've been using the proxy example and I've discovered a bug.
> The IOHandler that handles the communication with the server (proxy
> <---->server) I've found a situation where the handler receives a
> messageReceived event and then a sessionClosed event in a very short time
> period. The result is that the bytes received in the proxy are not sent to
> the client. The connection to the client is closed before the message had a
> chance to be written.
> It is hard to explain the problem so here is a log trace showing what happens
> when everything goes well:
> 12:36:05,429 DEBUG [SocketAcceptorIoProcessor-0.0]
> connectionProxy.ClientToProxyIoHandler - [/127.0.0.1:14784] sessionOpened
> 12:36:05,461 DEBUG [SocketAcceptorIoProcessor-0.0]
> connectionProxy.ClientToProxyIoHandler - [/127.0.0.1:14784] messageReceived 8
> 12:36:05,461 DEBUG [Thread-1] connectionProxy.test.TestAppServer - server has
> received and sent data back
> 12:36:05,461 DEBUG [AnonymousIoService-7]
> connectionProxy.ServerToProxyIoHandler - [/127.0.0.1:80] messageSent 8
> 12:36:05,461 DEBUG [AnonymousIoService-7]
> connectionProxy.ServerToProxyIoHandler - [/127.0.0.1:80] messageReceived 8
> 12:36:05,461 DEBUG [SocketAcceptorIoProcessor-0.0]
> connectionProxy.ClientToProxyIoHandler - [/127.0.0.1:14784] messageSent 8
> 12:36:05,461 DEBUG [AnonymousIoService-7]
> connectionProxy.ServerToProxyIoHandler - [/127.0.0.1:80] sessionClosed 0
> 12:36:05,461 DEBUG [SocketAcceptorIoProcessor-0.0]
> connectionProxy.ClientToProxyIoHandler - [/127.0.0.1:14784] sessionClosed
> 12:36:05,461 DEBUG [Thread-5] connectionProxy.test.TestClient - client has
> received the data
> And this is a log trace that shows the problem:
> 12:38:00,554 DEBUG [SocketAcceptorIoProcessor-0.0]
> connectionProxy.ClientToProxyIoHandler - [/127.0.0.1:14904] sessionOpened
> 12:38:00,570 DEBUG [SocketAcceptorIoProcessor-0.0]
> connectionProxy.ClientToProxyIoHandler - [/127.0.0.1:14904] messageReceived 8
> 12:38:00,586 DEBUG [Thread-1] connectionProxy.test.TestAppServer - server has
> received and sent data back
> 12:38:00,586 DEBUG [AnonymousIoService-12]
> connectionProxy.ServerToProxyIoHandler - [/127.0.0.1:80] messageSent 8
> 12:38:00,586 DEBUG [AnonymousIoService-12]
> connectionProxy.ServerToProxyIoHandler - [/127.0.0.1:80] messageReceived 8
> 12:38:00,586 DEBUG [AnonymousIoService-12]
> connectionProxy.ServerToProxyIoHandler - [/127.0.0.1:80] sessionClosed 0
> 12:38:00,586 DEBUG [SocketAcceptorIoProcessor-0.0]
> connectionProxy.ClientToProxyIoHandler - [/127.0.0.1:14904] sessionClosed
> java.io.EOFException
> at java.io.DataInputStream.readFully(DataInputStream.java:178)
> at java.io.DataInputStream.readLong(DataInputStream.java:380)
> at com.indeos.connectionProxy.test.TestClient.run(TestClient.java:58)
> at java.lang.Thread.run(Thread.java:595)
> The EOFException says that the client has not be able to read the data before
> the connection was closed.
> The conclusion is that the close can happen before the write. Thus to solve
> the issue I had to add a join() in the messageReceived method such as:
> ((IoSession) session.getAttachment()).write(wb).join();
> Of course with this solution I break the asynchronous nature of the proxy. If
> you know a better solution I'd like to hear it!
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.