You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2012/06/06 02:11:43 UTC

svn commit: r1346680 - in /qpid/proton/trunk/proton-c: include/proton/engine.h src/engine/engine.c

Author: rhs
Date: Wed Jun  6 00:11:42 2012
New Revision: 1346680

URL: http://svn.apache.org/viewvc?rev=1346680&view=rev
Log:
fixed drain API

Modified:
    qpid/proton/trunk/proton-c/include/proton/engine.h
    qpid/proton/trunk/proton-c/src/engine/engine.c

Modified: qpid/proton/trunk/proton-c/include/proton/engine.h
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/include/proton/engine.h?rev=1346680&r1=1346679&r2=1346680&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/include/proton/engine.h (original)
+++ qpid/proton/trunk/proton-c/include/proton/engine.h Wed Jun  6 00:11:42 2012
@@ -268,8 +268,8 @@ void pn_drained(pn_link_t *sender);
 //void pn_abort(pn_sender_t *sender);
 
 // receiver
-void pn_flow(pn_link_t *receiver, int credits);
-void pn_drain(pn_link_t *receiver);
+void pn_flow(pn_link_t *receiver, int credit);
+void pn_drain(pn_link_t *receiver, int credit);
 ssize_t pn_recv(pn_link_t *receiver, char *bytes, size_t n);
 
 // delivery

Modified: qpid/proton/trunk/proton-c/src/engine/engine.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/engine/engine.c?rev=1346680&r1=1346679&r2=1346680&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Wed Jun  6 00:11:42 2012
@@ -1810,15 +1810,19 @@ ssize_t pn_recv(pn_link_t *receiver, cha
 
 void pn_flow(pn_link_t *receiver, int credit)
 {
-  if (!receiver) return;
-  receiver->credit += credit;
-  pn_modified(receiver->session->connection, &receiver->endpoint);
+  if (receiver && pn_is_receiver(receiver)) {
+    receiver->credit += credit;
+    receiver->drain = false;
+    pn_modified(receiver->session->connection, &receiver->endpoint);
+  }
 }
 
-void pn_drain(pn_link_t *receiver)
+void pn_drain(pn_link_t *receiver, int credit)
 {
-  if (receiver && pn_is_receiver(receiver))
+  if (receiver && pn_is_receiver(receiver)) {
+    pn_flow(receiver, credit);
     receiver->drain = true;
+  }
 }
 
 time_t pn_tick(pn_transport_t *engine, time_t now)



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