You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gm...@apache.org on 2018/02/16 19:45:08 UTC
qpid-dispatch git commit: DISPATCH-908 - Modified
qdr_connection_process to handle dispositions before detaches
Repository: qpid-dispatch
Updated Branches:
refs/heads/1.0.x ce5270335 -> ac22c1532
DISPATCH-908 - Modified qdr_connection_process to handle dispositions before detaches
(cherry picked from commit 785c99d1cd9279505eb64ffdec87acc13eacada0)
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/ac22c153
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/ac22c153
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/ac22c153
Branch: refs/heads/1.0.x
Commit: ac22c1532786966fc3c7f75e8aa3fadf6c056830
Parents: ce52703
Author: Ganesh Murthy <gm...@redhat.com>
Authored: Mon Jan 22 13:43:39 2018 -0500
Committer: Ganesh Murthy <gm...@redhat.com>
Committed: Fri Feb 16 14:27:33 2018 -0500
----------------------------------------------------------------------
src/router_core/connections.c | 35 ++++++++++++++++++-----------------
1 file changed, 18 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/ac22c153/src/router_core/connections.c
----------------------------------------------------------------------
diff --git a/src/router_core/connections.c b/src/router_core/connections.c
index 2c7200b..dd7a2a4 100644
--- a/src/router_core/connections.c
+++ b/src/router_core/connections.c
@@ -254,6 +254,24 @@ int qdr_connection_process(qdr_connection_t *conn)
sys_mutex_unlock(conn->work_lock);
if (link) {
+
+ //
+ // Handle disposition/settlement updates
+ //
+ qdr_delivery_ref_list_t updated_deliveries;
+ sys_mutex_lock(conn->work_lock);
+ DEQ_MOVE(link->updated_deliveries, updated_deliveries);
+ sys_mutex_unlock(conn->work_lock);
+
+ qdr_delivery_ref_t *dref = DEQ_HEAD(updated_deliveries);
+ while (dref) {
+ core->delivery_update_handler(core->user_context, dref->dlv, dref->dlv->disposition, dref->dlv->settled);
+ qdr_delivery_decref(core, dref->dlv, "qdr_connection_process - remove from updated list");
+ qdr_del_delivery_ref(&updated_deliveries, dref);
+ dref = DEQ_HEAD(updated_deliveries);
+ event_count++;
+ }
+
while (link_work) {
switch (link_work->work_type) {
case QDR_LINK_WORK_DELIVERY :
@@ -303,23 +321,6 @@ int qdr_connection_process(qdr_connection_t *conn)
event_count++;
}
- //
- // Handle disposition/settlement updates
- //
- qdr_delivery_ref_list_t updated_deliveries;
- sys_mutex_lock(conn->work_lock);
- DEQ_MOVE(link->updated_deliveries, updated_deliveries);
- sys_mutex_unlock(conn->work_lock);
-
- qdr_delivery_ref_t *dref = DEQ_HEAD(updated_deliveries);
- while (dref) {
- core->delivery_update_handler(core->user_context, dref->dlv, dref->dlv->disposition, dref->dlv->settled);
- qdr_delivery_decref(core, dref->dlv, "qdr_connection_process - remove from updated list");
- qdr_del_delivery_ref(&updated_deliveries, dref);
- dref = DEQ_HEAD(updated_deliveries);
- event_count++;
- }
-
if (free_link)
qdr_link_delete(link);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org