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 2013/11/07 19:55:58 UTC

svn commit: r1539761 - in /qpid/proton/trunk/proton-c/src: engine/engine.c messenger/messenger.c

Author: rhs
Date: Thu Nov  7 18:55:58 2013
New Revision: 1539761

URL: http://svn.apache.org/r1539761
Log:
rolled back premature fix

Modified:
    qpid/proton/trunk/proton-c/src/engine/engine.c
    qpid/proton/trunk/proton-c/src/messenger/messenger.c

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=1539761&r1=1539760&r2=1539761&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/engine/engine.c (original)
+++ qpid/proton/trunk/proton-c/src/engine/engine.c Thu Nov  7 18:55:58 2013
@@ -169,6 +169,7 @@ void pn_add_link(pn_session_t *ssn, pn_l
 
 void pn_remove_link(pn_session_t *ssn, pn_link_t *link)
 {
+  link->session = NULL;
   pn_list_remove(ssn->links, link);
 }
 

Modified: qpid/proton/trunk/proton-c/src/messenger/messenger.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/messenger/messenger.c?rev=1539761&r1=1539760&r2=1539761&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/messenger/messenger.c (original)
+++ qpid/proton/trunk/proton-c/src/messenger/messenger.c Thu Nov  7 18:55:58 2013
@@ -664,29 +664,6 @@ int pni_pump_in(pn_messenger_t *messenge
   return 0;
 }
 
-void pni_messenger_reclaim_link(pn_messenger_t *messenger, pn_link_t *link)
-{
-  if (pn_link_is_receiver(link) && pn_link_credit(link) > 0) {
-    int credit = pn_link_credit(link);
-    messenger->credit += credit;
-    messenger->distributed -= credit;
-  }
-
-  pn_delivery_t *d = pn_unsettled_head(link);
-  while (d) {
-    pni_entry_t *e = (pni_entry_t *) pn_delivery_get_context(d);
-    if (e) {
-      pni_entry_set_delivery(e, NULL);
-      if (pn_delivery_buffered(d)) {
-        pni_entry_set_status(e, PN_STATUS_ABORTED);
-      }
-    }
-    d = pn_unsettled_next(d);
-  }
-
-  link_ctx_release(messenger, link);
-}
-
 int pni_pump_out(pn_messenger_t *messenger, const char *address, pn_link_t *sender);
 
 void pn_messenger_endpoints(pn_messenger_t *messenger, pn_connection_t *conn, pn_connector_t *ctor)
@@ -756,10 +733,11 @@ void pn_messenger_endpoints(pn_messenger
 
   link = pn_link_head(conn, PN_REMOTE_CLOSED);
   while (link) {
-    if (PN_LOCAL_ACTIVE & pn_link_state(link)) {
+    if (PN_LOCAL_ACTIVE | pn_link_state(link)) {
       pn_condition_report("LINK", pn_link_remote_condition(link));
       pn_link_close(link);
-      pni_messenger_reclaim_link(messenger, link);
+    } else {
+      link_ctx_release( messenger, link );
       pn_link_free(link);
     }
     link = pn_link_next(link, PN_REMOTE_CLOSED);
@@ -796,7 +774,26 @@ void pni_messenger_reclaim(pn_messenger_
 
   pn_link_t *link = pn_link_head(conn, 0);
   while (link) {
-    pni_messenger_reclaim_link(messenger, link);
+    if (pn_link_is_receiver(link) && pn_link_credit(link) > 0) {
+      int credit = pn_link_credit(link);
+      messenger->credit += credit;
+      messenger->distributed -= credit;
+    }
+
+    pn_delivery_t *d = pn_unsettled_head(link);
+    while (d) {
+      pni_entry_t *e = (pni_entry_t *) pn_delivery_get_context(d);
+      if (e) {
+        pni_entry_set_delivery(e, NULL);
+        if (pn_delivery_buffered(d)) {
+          pni_entry_set_status(e, PN_STATUS_ABORTED);
+        }
+      }
+      d = pn_unsettled_next(d);
+    }
+
+    link_ctx_release(messenger, link);
+
     link = pn_link_next(link, 0);
   }
 
@@ -804,6 +801,7 @@ void pni_messenger_reclaim(pn_messenger_
   pn_connection_free(conn);
 }
 
+
 pn_connection_t *pn_messenger_connection(pn_messenger_t *messenger,
                                          pn_connector_t *connector,
                                          const char *scheme,



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