Details
Description
The CumulativeProtocolHandler doesn't accumulate for UDP transport.
It's because METADATA for NioDatagramSession is created as
static final TransportMetadata METADATA = new DefaultTransportMetadata("nio", "datagram", true, false, InetSocketAddress.class, DatagramSessionConfig.class, IoBuffer.class);
Where 4th parameter is fragmentation parameter. Thus it thinks there are no fragmentation for UDP transport.
NioDatagramSession METADATA should be created as:
static final TransportMetadata METADATA = new DefaultTransportMetadata("nio", "datagram", true, true,
InetSocketAddress.class, DatagramSessionConfig.class, IoBuffer.class);
Where 4th parameter is true, marking fragmentation is true for UDP.
Or the METADATA parameter can be exposed to developer.
This is link to the mailing list discussion.
http://apache-mina.10907.n7.nabble.com/CumulativeProtocolDecoder-and-UDP-td18927.html