Repository: qpid-dispatch Updated Branches: refs/heads/master 0f74209f0 -> ebee479ec
DISPATCH-387 - Remove the assumption that core links are always paired with qd-links in CORE_* calls. Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/ebee479e Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/ebee479e Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/ebee479e Branch: refs/heads/master Commit: ebee479ece7fdcf27625dffac9f9ab963f7cc195 Parents: 0f74209 Author: Ted Ross <[email protected]> Authored: Tue Jun 14 08:51:05 2016 -0400 Committer: Ted Ross <[email protected]> Committed: Tue Jun 14 08:51:05 2016 -0400 ---------------------------------------------------------------------- src/router_node.c | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/ebee479e/src/router_node.c ---------------------------------------------------------------------- diff --git a/src/router_node.c b/src/router_node.c index 819a69f..c02b016 100644 --- a/src/router_node.c +++ b/src/router_node.c @@ -763,15 +763,22 @@ static void CORE_link_detach(void *context, qdr_link_t *link, qdr_error_t *error static void CORE_link_flow(void *context, qdr_link_t *link, int credit) { qd_link_t *qlink = (qd_link_t*) qdr_link_get_context(link); + if (!qlink) + return; + pn_link_t *plink = qd_link_pn(qlink); - pn_link_flow(plink, credit); + if (plink) + pn_link_flow(plink, credit); } static void CORE_link_offer(void *context, qdr_link_t *link, int delivery_count) { qd_link_t *qlink = (qd_link_t*) qdr_link_get_context(link); + if (!qlink) + return; + pn_link_t *plink = qd_link_pn(qlink); if (plink) @@ -782,6 +789,9 @@ static void CORE_link_offer(void *context, qdr_link_t *link, int delivery_count) static void CORE_link_drained(void *context, qdr_link_t *link) { qd_link_t *qlink = (qd_link_t*) qdr_link_get_context(link); + if (!qlink) + return; + pn_link_t *plink = qd_link_pn(qlink); if (plink) @@ -792,6 +802,9 @@ static void CORE_link_drained(void *context, qdr_link_t *link) static void CORE_link_drain(void *context, qdr_link_t *link, bool mode) { qd_link_t *qlink = (qd_link_t*) qdr_link_get_context(link); + if (!qlink) + return; + pn_link_t *plink = qd_link_pn(qlink); if (plink) { @@ -803,12 +816,17 @@ static void CORE_link_drain(void *context, qdr_link_t *link, bool mode) static void CORE_link_push(void *context, qdr_link_t *link) { - qd_router_t *router = (qd_router_t*) context; - qd_link_t *qlink = (qd_link_t*) qdr_link_get_context(link); - pn_link_t *plink = qd_link_pn(qlink); - int link_credit = pn_link_credit(plink); + qd_router_t *router = (qd_router_t*) context; + qd_link_t *qlink = (qd_link_t*) qdr_link_get_context(link); + if (!qlink) + return; + + pn_link_t *plink = qd_link_pn(qlink); - qdr_link_process_deliveries(router->router_core, link, link_credit); + if (plink) { + int link_credit = pn_link_credit(plink); + qdr_link_process_deliveries(router->router_core, link, link_credit); + } } @@ -816,9 +834,15 @@ static void CORE_link_deliver(void *context, qdr_link_t *link, qdr_delivery_t *d { qd_router_t *router = (qd_router_t*) context; qd_link_t *qlink = (qd_link_t*) qdr_link_get_context(link); - pn_link_t *plink = qd_link_pn(qlink); - const char *tag; - int tag_length; + if (!qlink) + return; + + pn_link_t *plink = qd_link_pn(qlink); + if (!plink) + return; + + const char *tag; + int tag_length; qdr_delivery_tag(dlv, &tag, &tag_length); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
