You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2017/04/25 22:12:52 UTC
[3/5] qpid-dispatch git commit: DISPATCH-739: Fix more use of
qdr_delivery pointers after decref
DISPATCH-739: Fix more use of qdr_delivery pointers after decref
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/af6c53ed
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/af6c53ed
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/af6c53ed
Branch: refs/heads/master
Commit: af6c53eda1bad646a99a88240f9b18e62865d3aa
Parents: 9c7b5e9
Author: Alan Conway <ac...@redhat.com>
Authored: Tue Apr 25 17:24:38 2017 -0400
Committer: Alan Conway <ac...@redhat.com>
Committed: Tue Apr 25 17:52:46 2017 -0400
----------------------------------------------------------------------
src/router_core/connections.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/af6c53ed/src/router_core/connections.c
----------------------------------------------------------------------
diff --git a/src/router_core/connections.c b/src/router_core/connections.c
index c0c5b0c..20bcf56 100644
--- a/src/router_core/connections.c
+++ b/src/router_core/connections.c
@@ -650,16 +650,17 @@ static void qdr_link_cleanup_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_li
//
qdr_delivery_ref_t *ref = DEQ_HEAD(updated_deliveries);
while (ref) {
- qdr_delivery_decref_CT(core, ref->dlv);
-
//
- // Account for the lost reference from the Proton delivery
+ // Account for possible lost reference from the Proton delivery
//
if (!ref->dlv->cleared_proton_ref) {
- qdr_delivery_decref_CT(core, ref->dlv);
ref->dlv->cleared_proton_ref = true;
+ qdr_delivery_decref_CT(core, ref->dlv);
}
-
+ //
+ // Now our reference
+ //
+ qdr_delivery_decref_CT(core, ref->dlv);
qdr_del_delivery_ref(&updated_deliveries, ref);
ref = DEQ_HEAD(updated_deliveries);
}
@@ -683,18 +684,18 @@ static void qdr_link_cleanup_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_li
}
//
- // Account for the undelivered-list reference
- //
- qdr_delivery_decref_CT(core, dlv);
-
- //
// Account for the lost reference from the Proton delivery
// for unsettled deliveries on incoming links
//
if (link->link_direction == QD_INCOMING && !dlv->settled && !dlv->cleared_proton_ref) {
- qdr_delivery_decref_CT(core, dlv);
dlv->cleared_proton_ref = true;
+ qdr_delivery_decref_CT(core, dlv);
}
+ //
+ // Now the undelivered-list reference
+ //
+ qdr_delivery_decref_CT(core, dlv);
+
dlv = DEQ_HEAD(undelivered);
}
@@ -727,17 +728,17 @@ static void qdr_link_cleanup_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_li
}
//
- // Account for the unsettled-list reference
- //
- qdr_delivery_decref_CT(core, dlv);
-
- //
// Account for the lost reference from the Proton delivery
//
if (!dlv->cleared_proton_ref) {
dlv->cleared_proton_ref = true;
qdr_delivery_decref_CT(core, dlv);
}
+ //
+ // Now the unsettled-list reference
+ //
+ qdr_delivery_decref_CT(core, dlv);
+
dlv = DEQ_HEAD(unsettled);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org