Ken Giusti commented on PROTON-255:

Patch to work-around the problem:

diff --git a/proton-c/src/messenger.c b/proton-c/src/messenger.c
index 61d4fbc..46e2e96 100644
--- a/proton-c/src/messenger.c
+++ b/proton-c/src/messenger.c
@@ -1081,8 +1081,10 @@ bool pn_messenger_sent(pn_messenger_t *messenger)
     // check if transport is done generating output
     pn_transport_t *transport = pn_connector_transport(ctor);
     if (transport) {
-      if (!pn_transport_quiesced(transport))
+      if (!pn_transport_quiesced(transport)) {
+        pn_connector_process(ctor);
         return false;
+      }
     pn_connection_t *conn = pn_connector_connection(ctor);

> Messenger stall in send(): frames buffered in transport not written to driver.
> ------------------------------------------------------------------------------
>                 Key: PROTON-255
>                 URL: https://issues.apache.org/jira/browse/PROTON-255
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c
>    Affects Versions: 0.4
>            Reporter: Ken Giusti
>            Priority: Blocker
> I've created a simple "ping-pong" test between two Messenger clients.  One 
> client sends 10k messages to the other, which replies.  The test stalls after 
> sending 10 messages in each direction, which is the value used for link 
> credit.
> The cause of the problem is that the FLOW frame sent by one client is not be 
> received by the other.  The failure is due to the FLOW frame remaining 
> buffered in the sender's transport buffer, not being written to the driver.  
> The driver is waiting for socket activity, and never "sees" the pending 
> output sitting in the transport.
> This bug appears to have been introduced by PROTON-225

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to