Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.16.2
-
None
-
Unknown
Description
The camel-mina2 consumer Exception handler (org.apache.camel.component.mina2.Mina2Consumer.ReceiveHandler.exceptionCaught(IoSession, Throwable)
Is an implementation of the Mina2 interface org.apache.mina.core.service.IoHandler. The Javadoc Mina2 documentation of exceptionCaught explicitly mention, that Mina2 will close the connection for all IOExceptions automatically. But camel-mina2 seems to close the connection for any kind of exception.
Current behavior: If an error occurs on the transport layer (e.g. secure TCP connection where the certificate was not trusted and a SSLException occure), I saw the following warning:
org.apache.camel.component.mina2.Mina2Consumer#exceptionCaught(376) - Closing session as an exception was thrown from MINA
And also an error from mina2:
org.apache.mina.filter.ssl.SslHandler#destroy(210) - Unexpected exception from SSLEngine.closeInbound(). " javax.net.ssl.SSLException: Inbound closed before receiving peer's close_notify: possible truncation attack?
From a functional perspective, beside the annoying log entries, it looks like the SSL error details are sometime not send properly back to the client.
Current workaround: I don’t have one.
Suggested bugfix: Implement the Mina2Consumer exception handling similar to org.apache.mina.handler.stream.StreamIoHandler.exceptionCaught(IoSession, Throwable) and do not handle IoException and simply rethrow them. E.g.
if (cause instanceof IOException) { LOG.info("IOException will be closed by Mina itself") return; }