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/19 00:06:51 UTC
[33/50] [abbrv] qpid-dispatch git commit: DISPATCH-179 - Implemented
auto-link activation, added deprecation warnings to old configs.
DISPATCH-179 - Implemented auto-link activation, added deprecation warnings to old configs.
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/c8f2c9df
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/c8f2c9df
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/c8f2c9df
Branch: refs/heads/master
Commit: c8f2c9df1b16a3f87991f049aed0f164477809c6
Parents: 2aa0e26
Author: Ted Ross <tr...@redhat.com>
Authored: Wed Mar 16 17:16:30 2016 -0400
Committer: Ted Ross <tr...@redhat.com>
Committed: Wed Mar 16 17:16:30 2016 -0400
----------------------------------------------------------------------
python/qpid_dispatch/management/qdrouter.json | 12 ++-
src/router_config.c | 22 ++++-
src/router_core/agent_config_auto_link.c | 32 ++++++-
src/router_core/agent_config_auto_link.h | 2 +-
src/router_core/connections.c | 70 +++++++++-----
src/router_core/route_control.c | 102 ++++++++++++++++++---
src/router_core/route_control.h | 14 +--
src/router_core/router_core_private.h | 20 ++++
src/router_node.c | 3 +
9 files changed, 229 insertions(+), 48 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/python/qpid_dispatch/management/qdrouter.json
----------------------------------------------------------------------
diff --git a/python/qpid_dispatch/management/qdrouter.json b/python/qpid_dispatch/management/qdrouter.json
index 61d3642..6f70fe9 100644
--- a/python/qpid_dispatch/management/qdrouter.json
+++ b/python/qpid_dispatch/management/qdrouter.json
@@ -945,7 +945,17 @@
},
"linkRef": {
"type": "string",
- "description": "Reference to the org.apache.qpid.dispatch.router.link if the link is attached",
+ "description": "Reference to the org.apache.qpid.dispatch.router.link if the link exists",
+ "create": false
+ },
+ "operStatus": {
+ "type": ["inactive", "attaching", "failed", "active", "quiescing", "idle"],
+ "description": "The operational status of this autoLink: inactive - The remote container is not connected; attaching - the link is attaching to the remote node; failed - the link attach failed; active - the link is attached and operational; quiescing - the link is transitioning to idle state; idle - the link is attached but there are no deliveries flowing and no unsettled deliveries.",
+ "create": false
+ },
+ "lastError": {
+ "type": "string",
+ "description": "The error description from the last attach failure",
"create": false
}
}
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/src/router_config.c
----------------------------------------------------------------------
diff --git a/src/router_config.c b/src/router_config.c
index 202ee9f..c6963e8 100644
--- a/src/router_config.c
+++ b/src/router_config.c
@@ -29,6 +29,12 @@
qd_error_t qd_router_configure_fixed_address(qd_router_t *router, qd_entity_t *entity)
{
+ static bool deprecate_warning = true;
+ if (deprecate_warning) {
+ deprecate_warning = false;
+ qd_log(router->log_source, QD_LOG_WARNING, "fixedAddress configuration is deprecated, switch to using address instead.");
+ }
+
qd_error_clear();
int phase = qd_entity_opt_long(entity, "phase", -1); QD_ERROR_RET();
qd_schema_fixedAddress_fanout_t fanout = qd_entity_get_long(entity, "fanout"); QD_ERROR_RET();
@@ -63,7 +69,7 @@ qd_error_t qd_router_configure_fixed_address(qd_router_t *router, qd_entity_t *e
}
//
- // Formulate this configuration as a router.route and create it through the core management API.
+ // Formulate this configuration as a router.config.address and create it through the core management API.
//
qd_composed_field_t *body = qd_compose_subfield(0);
qd_compose_start_map(body);
@@ -97,6 +103,12 @@ qd_error_t qd_router_configure_fixed_address(qd_router_t *router, qd_entity_t *e
qd_error_t qd_router_configure_waypoint(qd_router_t *router, qd_entity_t *entity)
{
+ static bool deprecate_warning = true;
+ if (deprecate_warning) {
+ deprecate_warning = false;
+ qd_log(router->log_source, QD_LOG_WARNING, "waypoint configuration is deprecated, switch to using autoLink instead.");
+ }
+
/*
char *address = qd_entity_get_string(entity, "address"); QD_ERROR_RET();
char *connector = qd_entity_get_string(entity, "connector"); QD_ERROR_RET();
@@ -131,7 +143,7 @@ qd_error_t qd_router_configure_waypoint(qd_router_t *router, qd_entity_t *entity
static void qd_router_add_link_route(qdr_core_t *core, const char *prefix, const char *connector, const char* dir)
{
//
- // Formulate this configuration as a router.route and create it through the core management API.
+ // Formulate this configuration as a router.config.linkRoute and create it through the core management API.
//
qd_composed_field_t *body = qd_compose_subfield(0);
qd_compose_start_map(body);
@@ -169,6 +181,12 @@ static void qd_router_add_link_route(qdr_core_t *core, const char *prefix, const
qd_error_t qd_router_configure_lrp(qd_router_t *router, qd_entity_t *entity)
{
+ static bool deprecate_warning = true;
+ if (deprecate_warning) {
+ deprecate_warning = false;
+ qd_log(router->log_source, QD_LOG_WARNING, "linkRoutePrefix configuration is deprecated, switch to using linkRoute instead.");
+ }
+
char *prefix = qd_entity_get_string(entity, "prefix"); QD_ERROR_RET();
char *connector = qd_entity_get_string(entity, "connector"); QD_ERROR_RET();
char *direction = qd_entity_get_string(entity, "dir"); QD_ERROR_RET();
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/src/router_core/agent_config_auto_link.c
----------------------------------------------------------------------
diff --git a/src/router_core/agent_config_auto_link.c b/src/router_core/agent_config_auto_link.c
index 6f8ef8a..b18fb90 100644
--- a/src/router_core/agent_config_auto_link.c
+++ b/src/router_core/agent_config_auto_link.c
@@ -31,6 +31,8 @@
#define QDR_CONFIG_AUTO_LINK_CONNECTION 6
#define QDR_CONFIG_AUTO_LINK_CONTAINER_ID 7
#define QDR_CONFIG_AUTO_LINK_LINK_REF 8
+#define QDR_CONFIG_AUTO_LINK_OPER_STATUS 9
+#define QDR_CONFIG_AUTO_LINK_LAST_ERROR 10
const char *qdr_config_auto_link_columns[] =
{"name",
@@ -39,9 +41,11 @@ const char *qdr_config_auto_link_columns[] =
"addr",
"dir",
"phase",
- "containerId",
"connection",
+ "containerId",
"linkRef",
+ "operStatus",
+ "lastError",
0};
@@ -110,6 +114,30 @@ static void qdr_config_auto_link_insert_column_CT(qdr_auto_link_t *al, int col,
qd_compose_insert_string(body, id_str);
} else
qd_compose_insert_null(body);
+ break;
+
+ case QDR_CONFIG_AUTO_LINK_OPER_STATUS:
+ switch (al->state) {
+ case QDR_AUTO_LINK_STATE_INACTIVE: text = "inactive"; break;
+ case QDR_AUTO_LINK_STATE_ATTACHING: text = "attaching"; break;
+ case QDR_AUTO_LINK_STATE_FAILED: text = "failed"; break;
+ case QDR_AUTO_LINK_STATE_ACTIVE: text = "active"; break;
+ case QDR_AUTO_LINK_STATE_QUIESCING: text = "quiescing"; break;
+ case QDR_AUTO_LINK_STATE_IDLE: text = "idle"; break;
+ }
+
+ if (text)
+ qd_compose_insert_string(body, text);
+ else
+ qd_compose_insert_null(body);
+ break;
+
+ case QDR_CONFIG_AUTO_LINK_LAST_ERROR:
+ if (al->last_error)
+ qd_compose_insert_string(body, al->last_error);
+ else
+ qd_compose_insert_null(body);
+ break;
}
}
@@ -362,7 +390,7 @@ void qdra_config_auto_link_create_CT(qdr_core_t *core,
bool is_container = !!container_field;
qd_parsed_field_t *in_use_conn = is_container ? container_field : connection_field;
- qdr_route_add_auto_link_CT(core, name, addr_field, dir, phase, in_use_conn, is_container);
+ al = qdr_route_add_auto_link_CT(core, name, addr_field, dir, phase, in_use_conn, is_container);
//
// Compose the result map for the response.
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/src/router_core/agent_config_auto_link.h
----------------------------------------------------------------------
diff --git a/src/router_core/agent_config_auto_link.h b/src/router_core/agent_config_auto_link.h
index 578d402..e1a433f 100644
--- a/src/router_core/agent_config_auto_link.h
+++ b/src/router_core/agent_config_auto_link.h
@@ -28,7 +28,7 @@ void qdra_config_auto_link_update_CT(qdr_core_t *core, qdr_query_t *query, qd_pa
void qdra_config_auto_link_delete_CT(qdr_core_t *core, qdr_query_t *query, qd_field_iterator_t *name,
qd_field_iterator_t *identity);
-#define QDR_CONFIG_AUTO_LINK_COLUMN_COUNT 9
+#define QDR_CONFIG_AUTO_LINK_COLUMN_COUNT 11
const char *qdr_config_auto_link_columns[QDR_CONFIG_AUTO_LINK_COLUMN_COUNT + 1];
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/src/router_core/connections.c
----------------------------------------------------------------------
diff --git a/src/router_core/connections.c b/src/router_core/connections.c
index 45d7920..fbce669 100644
--- a/src/router_core/connections.c
+++ b/src/router_core/connections.c
@@ -434,12 +434,12 @@ static void qdr_link_cleanup_CT(qdr_core_t *core, qdr_connection_t *conn, qdr_li
}
-static qdr_link_t *qdr_create_link_CT(qdr_core_t *core,
- qdr_connection_t *conn,
- qd_link_type_t link_type,
- qd_direction_t dir,
- qdr_terminus_t *source,
- qdr_terminus_t *target)
+qdr_link_t *qdr_create_link_CT(qdr_core_t *core,
+ qdr_connection_t *conn,
+ qd_link_type_t link_type,
+ qd_direction_t dir,
+ qdr_terminus_t *source,
+ qdr_terminus_t *target)
{
//
// Create a new link, initiated by the router core. This will involve issuing a first-attach outbound.
@@ -530,7 +530,7 @@ static char qdr_prefix_for_dir(qd_direction_t dir)
}
-static qd_address_treatment_t qdr_treatment_for_address_CT(qdr_core_t *core, qd_field_iterator_t *iter)
+qd_address_treatment_t qdr_treatment_for_address_CT(qdr_core_t *core, qd_field_iterator_t *iter)
{
qdr_address_config_t *addr = 0;
@@ -985,6 +985,17 @@ static void qdr_link_inbound_second_attach_CT(qdr_core_t *core, qdr_action_t *ac
qdr_link_issue_credit_CT(core, link, link->capacity);
switch (link->link_type) {
case QD_LINK_ENDPOINT:
+ if (link->auto_link) {
+ //
+ // This second-attach is the completion of an auto-link. If the attach
+ // has a valid source, transition the auto-link to the "active" state.
+ //
+ if (qdr_terminus_get_address(source)) {
+ link->auto_link->state = QDR_AUTO_LINK_STATE_ACTIVE;
+ qdr_add_link_ref(&link->auto_link->addr->inlinks, link, QDR_LINK_LIST_CLASS_ADDRESS);
+ link->owning_addr = link->auto_link->addr;
+ }
+ }
break;
case QD_LINK_WAYPOINT:
@@ -1002,6 +1013,22 @@ static void qdr_link_inbound_second_attach_CT(qdr_core_t *core, qdr_action_t *ac
//
switch (link->link_type) {
case QD_LINK_ENDPOINT:
+ if (link->auto_link) {
+ //
+ // This second-attach is the completion of an auto-link. If the attach
+ // has a valid target, transition the auto-link to the "active" state.
+ //
+ if (qdr_terminus_get_address(target)) {
+ link->auto_link->state = QDR_AUTO_LINK_STATE_ACTIVE;
+ qdr_add_link_ref(&link->auto_link->addr->rlinks, link, QDR_LINK_LIST_CLASS_ADDRESS);
+ link->owning_addr = link->auto_link->addr;
+ if (DEQ_SIZE(link->auto_link->addr->rlinks) == 1) {
+ const char *key = (const char*) qd_hash_key_by_handle(link->auto_link->addr->hash_handle);
+ if (key && *key == 'M')
+ qdr_post_mobile_added_CT(core, key);
+ }
+ }
+ }
break;
case QD_LINK_WAYPOINT:
@@ -1055,13 +1082,21 @@ static void qdr_link_inbound_detach_CT(qdr_core_t *core, qdr_action_t *action, b
link->detach_count++;
//
- // TODO - For routed links, propagate the detach
+ // For routed links, propagate the detach
//
if (link->connected_link) {
qdr_link_outbound_detach_CT(core, link->connected_link, error, QDR_CONDITION_NONE);
return;
}
+ //
+ // For auto links, switch the auto link to failed state and record the error
+ //
+ if (link->auto_link) {
+ link->auto_link->state = QDR_AUTO_LINK_STATE_FAILED;
+ // TODO - last_error
+ }
+
link->owning_addr = 0;
if (link->link_direction == QD_INCOMING) {
@@ -1110,6 +1145,10 @@ static void qdr_link_inbound_detach_CT(qdr_core_t *core, qdr_action_t *action, b
}
}
+ //
+ // TODO - If this link is owned by an auto_link, handle the unexpected detach.
+ //
+
if (link->detach_count == 1) {
//
// If the detach occurred via protocol, send a detach back.
@@ -1127,21 +1166,6 @@ static void qdr_link_inbound_detach_CT(qdr_core_t *core, qdr_action_t *action, b
//
if (addr)
qdr_check_addr_CT(core, addr, was_local);
-
- //
- // Cases to be handled:
- //
- // Link is link-routed:
- // Propagate the detach along the link-chain
- // Link is half-detached and not link-routed:
- // Issue a detach back to the originating node
- // Link is fully detached:
- // Free the qdr_link object
- // Remove any address linkages associated with this link
- // If the last dest for a local address is lost, notify the router (mobile_removed)
- // Link is a router-control link:
- // Issue a link-lost indication to the router
- //
}
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/src/router_core/route_control.c
----------------------------------------------------------------------
diff --git a/src/router_core/route_control.c b/src/router_core/route_control.c
index 88a1e93..54f4573 100644
--- a/src/router_core/route_control.c
+++ b/src/router_core/route_control.c
@@ -69,7 +69,7 @@ static void qdr_route_log_CT(qdr_core_t *core, const char *text, const char *nam
snprintf(id_string, 64, "%ld", id);
qd_log(core->log, QD_LOG_INFO, "%s '%s' on %s %s",
- log_name, text, key[0] == 'L' ? "connection" : "container", &key[1]);
+ text, log_name, key[0] == 'L' ? "connection" : "container", &key[1]);
}
@@ -77,7 +77,7 @@ static void qdr_link_route_activate_CT(qdr_core_t *core, qdr_link_route_t *lr, q
{
const char *key;
- qdr_route_log_CT(core, "Activated Link Route", lr->name, lr->identity, conn);
+ qdr_route_log_CT(core, "Link Route Activated", lr->name, lr->identity, conn);
//
// Activate the address for link-routed destinations. If this is the first
@@ -98,7 +98,7 @@ static void qdr_link_route_deactivate_CT(qdr_core_t *core, qdr_link_route_t *lr,
{
const char *key;
- qdr_route_log_CT(core, "Deactivated Link Route", lr->name, lr->identity, conn);
+ qdr_route_log_CT(core, "Link Route Deactivated", lr->name, lr->identity, conn);
//
// Deactivate the address(es) for link-routed destinations.
@@ -114,6 +114,42 @@ static void qdr_link_route_deactivate_CT(qdr_core_t *core, qdr_link_route_t *lr,
}
+static void qdr_auto_link_activate_CT(qdr_core_t *core, qdr_auto_link_t *al, qdr_connection_t *conn)
+{
+ const char *key;
+
+ qdr_route_log_CT(core, "Auto Link Activated", al->name, al->identity, conn);
+
+ //
+ // Activate the link for an auto_link. If this is the first activation for this
+ // address, notify the router module of the added address.
+ //
+ if (al->addr) {
+ qdr_terminus_t *source = 0;
+ qdr_terminus_t *target = 0;
+ qdr_terminus_t *term = qdr_terminus(0);
+
+ if (al->dir == QD_INCOMING)
+ source = term;
+ else
+ target = term;
+
+ key = (const char*) qd_hash_key_by_handle(al->addr->hash_handle);
+ if (key) {
+ qdr_terminus_set_address(term, &key[2]); // truncate the "Mp" annotation (where p = phase)
+ al->link = qdr_create_link_CT(core, conn, QD_LINK_ENDPOINT, al->dir, source, target);
+ al->link->auto_link = al;
+ al->state = QDR_AUTO_LINK_STATE_ATTACHING;
+ }
+ }
+}
+
+
+static void qdr_auto_link_deactivate_CT(qdr_core_t *core, qdr_auto_link_t *al, qdr_connection_t *conn)
+{
+}
+
+
void qdr_route_add_link_route_CT(qdr_core_t *core,
qd_field_iterator_t *name,
qd_parsed_field_t *prefix_field,
@@ -169,14 +205,56 @@ void qdr_route_del_link_route_CT(qdr_core_t *core, qdr_link_route_t *lr)
}
-void qdr_route_add_auto_link_CT(qdr_core_t *core,
- qd_field_iterator_t *name,
- qd_parsed_field_t *addr_field,
- qd_direction_t dir,
- int phase,
- qd_parsed_field_t *conn_id,
- bool is_container)
+qdr_auto_link_t *qdr_route_add_auto_link_CT(qdr_core_t *core,
+ qd_field_iterator_t *name,
+ qd_parsed_field_t *addr_field,
+ qd_direction_t dir,
+ int phase,
+ qd_parsed_field_t *conn_id,
+ bool is_container)
{
+ qdr_auto_link_t *al = new_qdr_auto_link_t();
+
+ //
+ // Set up the link_route structure
+ //
+ ZERO(al);
+ al->identity = qdr_identifier(core);
+ al->name = name ? (char*) qd_field_iterator_copy(name) : 0;
+ al->dir = dir;
+ al->phase = phase;
+ al->state = QDR_AUTO_LINK_STATE_INACTIVE;
+
+ //
+ // Find or create an address for the auto_link destination
+ //
+ qd_field_iterator_t *iter = qd_parse_raw(addr_field);
+ qd_address_iterator_reset_view(iter, ITER_VIEW_ADDRESS_HASH);
+ qd_address_iterator_set_phase(iter, (char) phase + '0');
+
+ 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, iter));
+ DEQ_INSERT_TAIL(core->addrs, al->addr);
+ qd_hash_insert(core->addr_hash, iter, al->addr, &al->addr->hash_handle);
+ }
+
+ //
+ // Find or create a connection identifier structure for this auto_link
+ //
+ if (conn_id) {
+ al->conn_id = qdr_route_declare_id_CT(core, qd_parse_raw(conn_id), is_container);
+ DEQ_INSERT_TAIL_N(REF, al->conn_id->auto_link_refs, al);
+ if (al->conn_id->open_connection)
+ qdr_auto_link_activate_CT(core, al, al->conn_id->open_connection);
+ }
+
+ //
+ // Add the auto_link to the core list
+ //
+ DEQ_INSERT_TAIL(core->auto_links, al);
+
+ return al;
}
@@ -213,7 +291,7 @@ void qdr_route_connection_opened_CT(qdr_core_t *core,
//
qdr_auto_link_t *al = DEQ_HEAD(cid->auto_link_refs);
while (al) {
- //qdr_link_route_activate_CT(core, lr, conn);
+ qdr_auto_link_activate_CT(core, al, conn);
al = DEQ_NEXT_N(REF, al);
}
}
@@ -240,7 +318,7 @@ void qdr_route_connection_closed_CT(qdr_core_t *core, qdr_connection_t *conn)
//
qdr_auto_link_t *al = DEQ_HEAD(cid->auto_link_refs);
while (al) {
- //qdr_link_route_deactivate_CT(core, lr, conn);
+ qdr_auto_link_deactivate_CT(core, al, conn);
al = DEQ_NEXT_N(REF, al);
}
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/src/router_core/route_control.h
----------------------------------------------------------------------
diff --git a/src/router_core/route_control.h b/src/router_core/route_control.h
index 7738c6d..34b8bd9 100644
--- a/src/router_core/route_control.h
+++ b/src/router_core/route_control.h
@@ -31,13 +31,13 @@ void qdr_route_add_link_route_CT(qdr_core_t *core,
void qdr_route_del_link_route_CT(qdr_core_t *core, qdr_link_route_t *lr);
-void qdr_route_add_auto_link_CT(qdr_core_t *core,
- qd_field_iterator_t *name,
- qd_parsed_field_t *addr_field,
- qd_direction_t dir,
- int phase,
- qd_parsed_field_t *conn_id,
- bool is_container);
+qdr_auto_link_t *qdr_route_add_auto_link_CT(qdr_core_t *core,
+ qd_field_iterator_t *name,
+ qd_parsed_field_t *addr_field,
+ qd_direction_t dir,
+ int phase,
+ qd_parsed_field_t *conn_id,
+ bool is_container);
void qdr_route_del_auto_link_CT(qdr_core_t *core, qdr_auto_link_t *auto_link);
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/src/router_core/router_core_private.h
----------------------------------------------------------------------
diff --git a/src/router_core/router_core_private.h b/src/router_core/router_core_private.h
index 28e4aef..6956b67 100644
--- a/src/router_core/router_core_private.h
+++ b/src/router_core/router_core_private.h
@@ -228,6 +228,7 @@ struct qdr_link_t {
qdr_address_t *owning_addr; ///< [ref] Address record that owns this link
qdr_link_t *connected_link; ///< [ref] If this is a link-route, reference the connected link
qdr_link_ref_t *ref[QDR_LINK_LIST_CLASSES]; ///< Pointers to containing reference objects
+ qdr_auto_link_t *auto_link; ///< [ref] Auto_link that owns this link
qdr_delivery_list_t undelivered; ///< Deliveries to be forwarded or sent
qdr_delivery_list_t unsettled; ///< Unsettled deliveries
qdr_delivery_ref_list_t updated_deliveries; ///< References to deliveries (in the unsettled list) with updates.
@@ -417,6 +418,15 @@ ALLOC_DECLARE(qdr_link_route_t);
DEQ_DECLARE(qdr_link_route_t, qdr_link_route_list_t);
+typedef enum {
+ QDR_AUTO_LINK_STATE_INACTIVE,
+ QDR_AUTO_LINK_STATE_ATTACHING,
+ QDR_AUTO_LINK_STATE_FAILED,
+ QDR_AUTO_LINK_STATE_ACTIVE,
+ QDR_AUTO_LINK_STATE_QUIESCING,
+ QDR_AUTO_LINK_STATE_IDLE
+} qdr_auto_link_state_t;
+
struct qdr_auto_link_t {
DEQ_LINKS(qdr_auto_link_t);
DEQ_LINKS_N(REF, qdr_auto_link_t);
@@ -427,6 +437,8 @@ struct qdr_auto_link_t {
qd_direction_t dir;
qdr_conn_identifier_t *conn_id;
qdr_link_t *link;
+ qdr_auto_link_state_t state;
+ char *last_error;
};
ALLOC_DECLARE(qdr_auto_link_t);
@@ -550,11 +562,19 @@ void qdr_check_addr_CT(qdr_core_t *core, qdr_address_t *addr, bool was_local);
qdr_delivery_t *qdr_forward_new_delivery_CT(qdr_core_t *core, qdr_delivery_t *peer, qdr_link_t *link, qd_message_t *msg);
void qdr_forward_deliver_CT(qdr_core_t *core, qdr_link_t *link, qdr_delivery_t *dlv);
void qdr_connection_activate_CT(qdr_core_t *core, qdr_connection_t *conn);
+qd_address_treatment_t qdr_treatment_for_address_CT(qdr_core_t *core, qd_field_iterator_t *iter);
void qdr_connection_enqueue_work_CT(qdr_core_t *core,
qdr_connection_t *conn,
qdr_connection_work_t *work);
+qdr_link_t *qdr_create_link_CT(qdr_core_t *core,
+ qdr_connection_t *conn,
+ qd_link_type_t link_type,
+ qd_direction_t dir,
+ qdr_terminus_t *source,
+ qdr_terminus_t *target);
+
qdr_query_t *qdr_query(qdr_core_t *core,
void *context,
qd_router_entity_type_t type,
http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/c8f2c9df/src/router_node.c
----------------------------------------------------------------------
diff --git a/src/router_node.c b/src/router_node.c
index 5d70cb9..3a9b8af 100644
--- a/src/router_node.c
+++ b/src/router_node.c
@@ -65,6 +65,9 @@ static void qd_router_connection_get_config(const qd_connection_t *conn,
*role = QDR_ROLE_NORMAL;
*name = cf->name;
+ if (strncmp("listener/", *name, 9) == 0 ||
+ strncmp("connector/", *name, 10) == 0)
+ *name = 0;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org