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