Bug submitted DIRMINA-672

On Fri, Mar 13, 2009 at 1:54 PM, James Talmage <
[email protected]> wrote:

> I'm using 2.0.0-M4.  Upon inspection of the source code, I can tell it's
> going to be a JDK / OS independent issue.  Also upon inspection, I've
> discovered the bug is actually in the CumulativeProtocolDecoder (starting @
> line 125):
>
> if (!session.getTransportMetadata().hasFragmentation()) {
>       doDecode(session, in, out);
>       return;
> }
>
> This breaks the contract with the doDecode method as it is only called once
> (the documentation says it should be called repeatedly until it returns
> false).  The following changes makes my previous test case pass, but it's
> probably a little simplistic.
>
> if (!session.getTransportMetadata().hasFragmentation()) {
>       while(in.hasRemaining() && doDecode(session, in, out)){
>              //Do nothing
>       }
>       return;
> }
>
> The code should probably make sure that if doDecode returns true, some of
> the buffer was actually consumed (as the code for fragmented transports
> does).  Also, it may make sense to provide another method (i.e.
> finishNonFragmentedDecode(...)), for handling the remainder of the buffer
> after doDecode returns false.
>
> I see where the author was headed with this code.  Transports (such as UDP)
> that don't support fragmentation probably don't jive with the concept of an
> accumulating buffer (what do we do with the accumulation buffer if we drop a
> UDP packet?).  It does however make perfect sense to use such transports
> with the concept of a DemuxingProtocolDecoder.  Perhaps it would be better
> to refactor the DemuxingProtocolDecoder so that it's not a subclass of
> CumulativeProtocolDecoder.  Create a helper class that handles the fragment
> accumulation aspect. CumulativeProtocolDecoder would always use said helper
> class (throwing an error if the protocol doesn't support fragmentation), but
> DemuxingProtocolDecoder could opt to use it depending on the protocol it
> encounters.
>
> As for JIRA: I tried to submit there first, but it had been a long time
> since I'd used it to submit a bug, and couldn't figure out how to create a
> new issue.   I see it now, so I'll do that as well.
>
>
>
> On Fri, Mar 13, 2009 at 7:18 AM, Emmanuel Lecharny 
> <[email protected]>wrote:
>
>> Maarten Bosteels wrote:
>>
>>> and please create a JIRA ticket and attach your test-case.
>>>
>>>
>> Also give some info about the version of MINA you are using, the OS you
>> are running on and the JVM you are using.
>>
>> Reading
>> http://mina.apache.org/contact.html#Contact-BeforePostingYourMessagecould 
>> help, too.
>>
>> http://www.catb.org/~esr/faqs/smart-questions.html<http://www.catb.org/%7Eesr/faqs/smart-questions.html>is
>>  also a nice article.
>>
>> --
>> --
>> cordialement, regards,
>> Emmanuel Lécharny
>> www.iktek.com
>> directory.apache.org
>>
>>
>>
>
>
> --
> James Talmage
> Owner
> JR Technical
> cell: 248-259-3137
> fax:  248-498-6071
>



-- 
James Talmage
Owner
JR Technical
cell: 248-259-3137
fax:  248-498-6071

Reply via email to