You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by Florian Weimer <fw...@redhat.com> on 2012/05/23 15:10:26 UTC

qpid::amqp_0_10::Connection::encode() produces zero-length frames

Hi,

the Qpid broker invokes encode() with a buffer size of 65536 bytes.  If 
a frame of 65536 bytes is about to be sent, there is room for it in the 
buffer, and the first while loop is entered.  But the underlying codec 
cannot express this frame size on the wire, it writes a 16-bit zero 
instead.  This seems to be an (ordinary) bug.

I would have expected that such over-sized frames are fragmented.  Is 
this actually implemented somewhere in the code?

Florian
-- 
Florian Weimer / Red Hat Product Security Team

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Re: qpid::amqp_0_10::Connection::encode() produces zero-length frames

Posted by Florian Weimer <fw...@redhat.com>.
On 05/23/2012 05:43 PM, Gordon Sim wrote:
>>> qpid::client::SessionImpl (for client).
>>
>> This appears to be more generic and also applies to controls which the
>> server cannot process (presumably due to lack of defragmentation).
>
> I believe the fragmentation here also only applies to content segments.

Okay, I was confused because the qpid.messaging.Connection client does 
fragment controls.

-- 
Florian Weimer / Red Hat Product Security Team

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Re: qpid::amqp_0_10::Connection::encode() produces zero-length frames

Posted by Gordon Sim <gs...@redhat.com>.
On 05/23/2012 03:11 PM, Florian Weimer wrote:
> On 05/23/2012 03:19 PM, Gordon Sim wrote:
>
>>> I would have expected that such over-sized frames are fragmented. Is
>>> this actually implemented somewhere in the code?
>>
>> Yes, in qpid::framing::SendContent (for broker) and
>
> Thanks. This seems to apply to message.transfer contents only, and not
> to headers or controls.

Yes, that is correct. The c++ client/broker currently do not handle 
header or command/control segments of more than one frame.

>> qpid::client::SessionImpl (for client).
>
> This appears to be more generic and also applies to controls which the
> server cannot process (presumably due to lack of defragmentation).

I believe the fragmentation here also only applies to content segments.


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Re: qpid::amqp_0_10::Connection::encode() produces zero-length frames

Posted by Florian Weimer <fw...@redhat.com>.
On 05/23/2012 03:19 PM, Gordon Sim wrote:

>> I would have expected that such over-sized frames are fragmented. Is
>> this actually implemented somewhere in the code?
>
> Yes, in qpid::framing::SendContent (for broker) and

Thanks.  This seems to apply to message.transfer contents only, and not 
to headers or controls.

> qpid::client::SessionImpl (for client).

This appears to be more generic and also applies to controls which the 
server cannot process (presumably due to lack of defragmentation).

-- 
Florian Weimer / Red Hat Product Security Team

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Re: qpid::amqp_0_10::Connection::encode() produces zero-length frames

Posted by Gordon Sim <gs...@redhat.com>.
On 05/23/2012 02:10 PM, Florian Weimer wrote:
> Hi,
>
> the Qpid broker invokes encode() with a buffer size of 65536 bytes. If a
> frame of 65536 bytes is about to be sent, there is room for it in the
> buffer, and the first while loop is entered. But the underlying codec
> cannot express this frame size on the wire, it writes a 16-bit zero
> instead. This seems to be an (ordinary) bug.
>
> I would have expected that such over-sized frames are fragmented. Is
> this actually implemented somewhere in the code?

Yes, in qpid::framing::SendContent (for broker) and 
qpid::client::SessionImpl (for client).

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org