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/03/18 14:09:10 UTC
qpid-dispatch git commit: DISPATCH_179 - Accept senders to unknown
addresses; Don't issue credit to senders if there are no receivers;
Disconnect linkage from PN->QDR on detach.
Repository: qpid-dispatch
Updated Branches:
refs/heads/tross-DISPATCH-179-1 7ec750b25 -> 620d779a5
DISPATCH_179 - Accept senders to unknown addresses; Don't issue credit to senders if
there are no receivers; Disconnect linkage from PN->QDR on detach.
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/620d779a
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/620d779a
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/620d779a
Branch: refs/heads/tross-DISPATCH-179-1
Commit: 620d779a528252a7bd3a252a42679fe8d26644d1
Parents: 7ec750b
Author: Ted Ross <tr...@redhat.com>
Authored: Fri Mar 18 09:07:37 2016 -0400
Committer: Ted Ross <tr...@redhat.com>
Committed: Fri Mar 18 09:07:37 2016 -0400
----------------------------------------------------------------------
src/router_core/connections.c | 9 +++++++--
src/router_node.c | 6 ++++++
2 files changed, 13 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/620d779a/src/router_core/connections.c
----------------------------------------------------------------------
diff --git a/src/router_core/connections.c b/src/router_core/connections.c
index f76311f..8ecd633 100644
--- a/src/router_core/connections.c
+++ b/src/router_core/connections.c
@@ -886,7 +886,7 @@ static void qdr_link_inbound_first_attach_CT(qdr_core_t *core, qdr_action_t *act
// This link has a target address
//
bool link_route;
- qdr_address_t *addr = qdr_lookup_terminus_address_CT(core, dir, target, false, false, &link_route);
+ qdr_address_t *addr = qdr_lookup_terminus_address_CT(core, dir, target, true, false, &link_route);
if (!addr) {
//
// No route to this destination, reject the link
@@ -915,7 +915,12 @@ static void qdr_link_inbound_first_attach_CT(qdr_core_t *core, qdr_action_t *act
link->owning_addr = addr;
qdr_add_link_ref(&addr->inlinks, link, QDR_LINK_LIST_CLASS_ADDRESS);
qdr_link_outbound_second_attach_CT(core, link, source, target);
- qdr_link_issue_credit_CT(core, link, link->capacity);
+
+ //
+ // Issue the initial credit only if there are destinations for the address.
+ //
+ if (DEQ_SIZE(addr->subscriptions) || DEQ_SIZE(addr->rlinks) || qd_bitmask_cardinality(addr->rnodes))
+ qdr_link_issue_credit_CT(core, link, link->capacity);
}
}
break;
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/620d779a/src/router_node.c
----------------------------------------------------------------------
diff --git a/src/router_node.c b/src/router_node.c
index 3a9b8af..b374cd7 100644
--- a/src/router_node.c
+++ b/src/router_node.c
@@ -447,6 +447,12 @@ static int router_link_detach_handler(void* context, qd_link_t *link, qd_detach_
if (!error && dt == QD_LOST)
error = qdr_error("qd:routed-link-lost", "Connectivity to the peer container was lost");
qdr_link_detach(rlink, dt, error);
+
+ //
+ // This is the last event for this link that we will send into the core. Remove the
+ // core linkage. Note that the core->qd linkage is still in place.
+ //
+ qd_link_set_context(link, 0);
}
return 0;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org