In the generated DictionaryDecoder, I've noticed that reset is called after the message is processed.
But if the acceptor or the decoder was to throw an exception, it will put the decoder in a bad state, the next time a same message comes in.
I think it should be reset before.
else if (messageType == RejectDecoder.MESSAGE_TYPE)
{
reject.decode(buffer, offset, length);
acceptor.onReject(reject);
reject.reset();
}