qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Moravec (JIRA)" <j...@apache.org>
Subject [jira] [Created] (QPID-5896) [C++ client] Out of Bounds received when message is bigger than remaining TCP frame size
Date Wed, 16 Jul 2014 07:28:05 GMT
Pavel Moravec created QPID-5896:
-----------------------------------

             Summary: [C++ client] Out of Bounds received when message is bigger than remaining
TCP frame size
                 Key: QPID-5896
                 URL: https://issues.apache.org/jira/browse/QPID-5896
             Project: Qpid
          Issue Type: Bug
          Components: C++ Client
    Affects Versions: 0.29
            Reporter: Pavel Moravec
            Priority: Minor


When implementing QPID-5895: if a message is split between two (or more) TCP/IP frames, ConnectionContext::get
method raises:

Out of Bounds: requested advance of 1000 at 44 but only 434 available

That is due to the fact that the code calls:

{noformat}
current = pn_link_current(..) // that returns just incomplete part of the message from already-read-TCP-frame
new EncodedMessage(pn_delivery_pending(current)) //here we create EncodedMessage with incomplete
length
{noformat}

There needs to be a loop like:

{noformat}
current = pn_link_current(..)
while pn_delivery_partial(current) {
    buffer_current_somewhere;
    current = pn_link_current(..);
    if (!current)
        wait_for_session_to_get_new_frame
}
encoded(new EncodedMessage(pn_delivery_pending(all_current_deliveries)));
{noformat}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

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


Mime
View raw message