You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2018/02/23 14:06:10 UTC
qpid-dispatch git commit: DISPATCH-928: check for null return from
qdr_address_CT
Repository: qpid-dispatch
Updated Branches:
refs/heads/master db5af96ca -> 00a0233c3
DISPATCH-928: check for null return from qdr_address_CT
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/00a0233c
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/00a0233c
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/00a0233c
Branch: refs/heads/master
Commit: 00a0233c337c8db24006acab7eece8970e5fe616
Parents: db5af96
Author: Gordon Sim <gs...@redhat.com>
Authored: Fri Feb 23 14:05:17 2018 +0000
Committer: Gordon Sim <gs...@redhat.com>
Committed: Fri Feb 23 14:05:17 2018 +0000
----------------------------------------------------------------------
src/router_core/route_control.c | 8 +++++++-
src/router_core/route_tables.c | 21 ++++++++++++---------
2 files changed, 19 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/00a0233c/src/router_core/route_control.c
----------------------------------------------------------------------
diff --git a/src/router_core/route_control.c b/src/router_core/route_control.c
index 690b151..c7e043e 100644
--- a/src/router_core/route_control.c
+++ b/src/router_core/route_control.c
@@ -318,6 +318,7 @@ qdr_link_route_t *qdr_route_add_link_route_CT(qdr_core_t *core,
qd_hash_retrieve(core->addr_hash, a_iter, (void*) &lr->addr);
if (!lr->addr) {
lr->addr = qdr_address_CT(core, treatment);
+ //treatment will not be undefined for link route so above will not return null
DEQ_INSERT_TAIL(core->addrs, lr->addr);
qd_hash_insert(core->addr_hash, a_iter, lr->addr, &lr->addr->hash_handle);
qdr_link_route_map_pattern_CT(core, a_iter, lr->addr);
@@ -417,7 +418,12 @@ qdr_auto_link_t *qdr_route_add_auto_link_CT(qdr_core_t *core,
qd_hash_retrieve(core->addr_hash, iter, (void*) &al->addr);
if (!al->addr) {
- al->addr = qdr_address_CT(core, qdr_treatment_for_address_CT(core, 0, iter, 0, 0));
+ qd_address_treatment_t treatment = qdr_treatment_for_address_CT(core, 0, iter, 0, 0);
+ if (treatment == QD_TREATMENT_UNAVAILABLE) {
+ //if associated address is not defined, assume balanced
+ treatment = QD_TREATMENT_ANYCAST_BALANCED;
+ }
+ al->addr = qdr_address_CT(core, treatment);
DEQ_INSERT_TAIL(core->addrs, al->addr);
qd_hash_insert(core->addr_hash, iter, al->addr, &al->addr->hash_handle);
}
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/00a0233c/src/router_core/route_tables.c
----------------------------------------------------------------------
diff --git a/src/router_core/route_tables.c b/src/router_core/route_tables.c
index 86a7aa4..6a1ae57 100644
--- a/src/router_core/route_tables.c
+++ b/src/router_core/route_tables.c
@@ -576,6 +576,7 @@ static void qdr_map_destination_CT(qdr_core_t *core, qdr_action_t *action, bool
qd_hash_retrieve(core->addr_hash, iter, (void**) &addr);
if (!addr) {
addr = qdr_address_CT(core, qdr_treatment_for_address_hash_CT(core, iter));
+ if (!addr) break;
qd_hash_insert(core->addr_hash, iter, addr, &addr->hash_handle);
DEQ_ITEM_INIT(addr);
DEQ_INSERT_TAIL(core->addrs, addr);
@@ -668,16 +669,18 @@ static void qdr_subscribe_CT(qdr_core_t *core, qdr_action_t *action, bool discar
qd_hash_retrieve(core->addr_hash, address->iterator, (void**) &addr);
if (!addr) {
addr = qdr_address_CT(core, action->args.io.treatment);
- qd_hash_insert(core->addr_hash, address->iterator, addr, &addr->hash_handle);
- DEQ_ITEM_INIT(addr);
- DEQ_INSERT_TAIL(core->addrs, addr);
+ if (addr) {
+ qd_hash_insert(core->addr_hash, address->iterator, addr, &addr->hash_handle);
+ DEQ_ITEM_INIT(addr);
+ DEQ_INSERT_TAIL(core->addrs, addr);
+ }
+ }
+ if (addr) {
+ sub->addr = addr;
+ DEQ_ITEM_INIT(sub);
+ DEQ_INSERT_TAIL(addr->subscriptions, sub);
+ qdr_addr_start_inlinks_CT(core, addr);
}
-
- sub->addr = addr;
- DEQ_ITEM_INIT(sub);
- DEQ_INSERT_TAIL(addr->subscriptions, sub);
- qdr_addr_start_inlinks_CT(core, addr);
-
} else
free(sub);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org