[ 
https://issues.apache.org/jira/browse/PROTON-961?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14642741#comment-14642741
 ] 

Gordon Sim commented on PROTON-961:
-----------------------------------

The pni_pump_in function in messenger.c proceeds to process incoming deliveries 
even if they are partial. There *is* a check for pn_delivery_partial at the 
start, but I'm not quite sure what it is trying to test there.

The following change seems to fix the problem with large incoming messages and 
doesn't break any of the tests. Is it possible the original check was just 
written incorrectly?

{noformat}
--- a/proton-c/src/messenger/messenger.c
+++ b/proton-c/src/messenger/messenger.c
@@ -987,7 +987,7 @@ static void pn_condition_report(const char *pfx, 
pn_condition_t *condition)
 int pni_pump_in(pn_messenger_t *messenger, const char *address, pn_link_t 
*receiver)
 {
   pn_delivery_t *d = pn_link_current(receiver);
-  if (!pn_delivery_readable(d) && !pn_delivery_partial(d)) {
+  if (!pn_delivery_readable(d) || pn_delivery_partial(d)) {
     return 0;
   }
{noformat}

> messenger doesn't handle multi-frame transfers
> ----------------------------------------------
>
>                 Key: PROTON-961
>                 URL: https://issues.apache.org/jira/browse/PROTON-961
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c
>    Affects Versions: 0.10, 0.11
>            Reporter: Gordon Sim
>
> See QPID-6651 for a reproducer.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to