[
https://issues.apache.org/jira/browse/PROTON-255?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13592319#comment-13592319
]
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