You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2016/12/19 19:28:28 UTC

qpid-dispatch git commit: DISPATCH-595 - While processing connection in qdr_connection_process(), deal with deliveries first

Repository: qpid-dispatch
Updated Branches:
  refs/heads/master 3086de102 -> c069eb0d8


DISPATCH-595 - While processing connection in qdr_connection_process(), deal with deliveries first


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/c069eb0d
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/c069eb0d
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/c069eb0d

Branch: refs/heads/master
Commit: c069eb0d8fb96903d6f620c1ba9d97fd1b7c1f9f
Parents: 3086de1
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Mon Dec 19 13:59:24 2016 -0500
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Mon Dec 19 13:59:24 2016 -0500

----------------------------------------------------------------------
 src/router_core/connections.c | 42 ++++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c069eb0d/src/router_core/connections.c
----------------------------------------------------------------------
diff --git a/src/router_core/connections.c b/src/router_core/connections.c
index acb23e8..00e9eb3 100644
--- a/src/router_core/connections.c
+++ b/src/router_core/connections.c
@@ -134,11 +134,32 @@ int qdr_connection_process(qdr_connection_t *conn)
     qdr_connection_work_list_t  work_list;
     qdr_core_t                 *core = conn->core;
 
+    qdr_link_ref_t *ref;
+    qdr_link_t     *link;
+
+    int event_count = 0;
+
+    do {
+        sys_mutex_lock(conn->work_lock);
+        ref = DEQ_HEAD(conn->links_with_deliveries);
+        if (ref) {
+            link = ref->link;
+            qdr_del_link_ref(&conn->links_with_deliveries, ref->link, QDR_LINK_LIST_CLASS_DELIVERY);
+        } else
+            link = 0;
+        sys_mutex_unlock(conn->work_lock);
+
+        if (link) {
+            core->push_handler(core->user_context, link);
+            event_count++;
+        }
+    } while (link);
+
     sys_mutex_lock(conn->work_lock);
     DEQ_MOVE(conn->work_list, work_list);
     sys_mutex_unlock(conn->work_lock);
 
-    int event_count = DEQ_SIZE(work_list);
+    event_count += DEQ_SIZE(work_list);
     qdr_connection_work_t *work = DEQ_HEAD(work_list);
     while (work) {
         DEQ_REMOVE_HEAD(work_list);
@@ -173,25 +194,6 @@ int qdr_connection_process(qdr_connection_t *conn)
         work = DEQ_HEAD(work_list);
     }
 
-    qdr_link_ref_t *ref;
-    qdr_link_t     *link;
-
-    do {
-        sys_mutex_lock(conn->work_lock);
-        ref = DEQ_HEAD(conn->links_with_deliveries);
-        if (ref) {
-            link = ref->link;
-            qdr_del_link_ref(&conn->links_with_deliveries, ref->link, QDR_LINK_LIST_CLASS_DELIVERY);
-        } else
-            link = 0;
-        sys_mutex_unlock(conn->work_lock);
-
-        if (link) {
-            core->push_handler(core->user_context, link);
-            event_count++;
-        }
-    } while (link);
-
     do {
         sys_mutex_lock(conn->work_lock);
         ref = DEQ_HEAD(conn->links_with_credit);


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