You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gm...@apache.org on 2021/10/27 19:22:37 UTC
[qpid-dispatch] branch main updated: DISPATCH-2230: Check the
discard flag and don't perform the action if it has been discarded
This is an automated email from the ASF dual-hosted git repository.
gmurthy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git
The following commit(s) were added to refs/heads/main by this push:
new 21a3a82 DISPATCH-2230: Check the discard flag and don't perform the action if it has been discarded
21a3a82 is described below
commit 21a3a8216e53d32fc48a989e903d619712f42404
Author: Ganesh Murthy <gm...@apache.org>
AuthorDate: Mon Oct 18 13:05:43 2021 -0400
DISPATCH-2230: Check the discard flag and don't perform the action if it has been discarded
---
src/router_core/agent.c | 134 ++++++++++++++++++++++-------------------
src/router_core/route_tables.c | 18 ++++++
2 files changed, 89 insertions(+), 63 deletions(-)
diff --git a/src/router_core/agent.c b/src/router_core/agent.c
index 42f6d34..68a96bf 100644
--- a/src/router_core/agent.c
+++ b/src/router_core/agent.c
@@ -417,21 +417,23 @@ static void qdr_manage_read_CT(qdr_core_t *core, qdr_action_t *action, bool disc
qd_iterator_t *name = qdr_field_iterator(action->args.agent.name);
qdr_query_t *query = action->args.agent.query;
- switch (query->entity_type) {
- case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_get_CT(core, name, identity, query, qdr_config_address_columns); break;
- case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_get_CT(core, name, identity, query, qdr_config_link_route_columns); break;
- case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_get_CT(core, name, identity, query, qdr_config_auto_link_columns); break;
- case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break;
- case QD_ROUTER_CONNECTION: qdra_connection_get_CT(core, name, identity, query, qdr_connection_columns); break;
- case QD_ROUTER_TCP_CONNECTION: qdra_tcp_connection_get_CT(core, name, identity, query, qdr_tcp_connection_columns); break;
- case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_CT(core, name, identity, query, qdr_http_request_info_columns); break;
- case QD_ROUTER_LINK: break;
- case QD_ROUTER_ADDRESS: qdra_address_get_CT(core, name, identity, query, qdr_address_columns); break;
- case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
- case QD_ROUTER_EXCHANGE: qdra_config_exchange_get_CT(core, name, identity, query, qdr_config_exchange_columns); break;
- case QD_ROUTER_BINDING: qdra_config_binding_get_CT(core, name, identity, query, qdr_config_binding_columns); break;
- case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_get_CT(core, name, identity, query, qdr_conn_link_route_columns); break;
- }
+ if (!discard) {
+ switch (query->entity_type) {
+ case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_get_CT(core, name, identity, query, qdr_config_address_columns); break;
+ case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_get_CT(core, name, identity, query, qdr_config_link_route_columns); break;
+ case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_get_CT(core, name, identity, query, qdr_config_auto_link_columns); break;
+ case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_CONNECTION: qdra_connection_get_CT(core, name, identity, query, qdr_connection_columns); break;
+ case QD_ROUTER_TCP_CONNECTION: qdra_tcp_connection_get_CT(core, name, identity, query, qdr_tcp_connection_columns); break;
+ case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_CT(core, name, identity, query, qdr_http_request_info_columns); break;
+ case QD_ROUTER_LINK: break;
+ case QD_ROUTER_ADDRESS: qdra_address_get_CT(core, name, identity, query, qdr_address_columns); break;
+ case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_EXCHANGE: qdra_config_exchange_get_CT(core, name, identity, query, qdr_config_exchange_columns); break;
+ case QD_ROUTER_BINDING: qdra_config_binding_get_CT(core, name, identity, query, qdr_config_binding_columns); break;
+ case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_get_CT(core, name, identity, query, qdr_conn_link_route_columns); break;
+ }
+ }
qdr_field_free(action->args.agent.name);
qdr_field_free(action->args.agent.identity);
@@ -445,22 +447,24 @@ static void qdr_manage_create_CT(qdr_core_t *core, qdr_action_t *action, bool di
qd_parsed_field_t *in_body = action->args.agent.in_body;
qd_buffer_list_t body_buffers = action->args.agent.body_buffers;
- switch (query->entity_type) {
- case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_create_CT(core, name, query, in_body); break;
- case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_create_CT(core, name, query, in_body); break;
- case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_create_CT(core, name, query, in_body); break;
- case QD_ROUTER_CONNECTION: break;
- case QD_ROUTER_TCP_CONNECTION: break;
- case QD_ROUTER_HTTP_REQUEST_INFO: break;
- case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break;
- case QD_ROUTER_LINK: break;
- case QD_ROUTER_ADDRESS: break;
- case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
- case QD_ROUTER_EXCHANGE: qdra_config_exchange_create_CT(core, name, query, in_body); break;
- case QD_ROUTER_BINDING: qdra_config_binding_create_CT(core, name, query, in_body); break;
- case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_create_CT(core, name, query, in_body); break;
-
- }
+ if (!discard) {
+ switch (query->entity_type) {
+ case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_create_CT(core, name, query, in_body); break;
+ case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_create_CT(core, name, query, in_body); break;
+ case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_create_CT(core, name, query, in_body); break;
+ case QD_ROUTER_CONNECTION: break;
+ case QD_ROUTER_TCP_CONNECTION: break;
+ case QD_ROUTER_HTTP_REQUEST_INFO: break;
+ case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_LINK: break;
+ case QD_ROUTER_ADDRESS: break;
+ case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_EXCHANGE: qdra_config_exchange_create_CT(core, name, query, in_body); break;
+ case QD_ROUTER_BINDING: qdra_config_binding_create_CT(core, name, query, in_body); break;
+ case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_create_CT(core, name, query, in_body); break;
+
+ }
+ }
qdr_field_free(action->args.agent.name);
qd_parse_free(in_body);
@@ -474,21 +478,23 @@ static void qdr_manage_delete_CT(qdr_core_t *core, qdr_action_t *action, bool di
qd_iterator_t *identity = qdr_field_iterator(action->args.agent.identity);
qdr_query_t *query = action->args.agent.query;
- switch (query->entity_type) {
- case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_delete_CT(core, query, name, identity); break;
- case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_delete_CT(core, query, name, identity); break;
- case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_delete_CT(core, query, name, identity); break;
- case QD_ROUTER_CONNECTION: qdr_agent_forbidden(core, query, false); break;
- case QD_ROUTER_TCP_CONNECTION: break;
- case QD_ROUTER_HTTP_REQUEST_INFO: break;
- case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break;
- case QD_ROUTER_LINK: break;
- case QD_ROUTER_ADDRESS: break;
- case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
- case QD_ROUTER_EXCHANGE: qdra_config_exchange_delete_CT(core, query, name, identity); break;
- case QD_ROUTER_BINDING: qdra_config_binding_delete_CT(core, query, name, identity); break;
- case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_delete_CT(core, query, name, identity); break;
- }
+ if (!discard) {
+ switch (query->entity_type) {
+ case QD_ROUTER_CONFIG_ADDRESS: qdra_config_address_delete_CT(core, query, name, identity); break;
+ case QD_ROUTER_CONFIG_LINK_ROUTE: qdra_config_link_route_delete_CT(core, query, name, identity); break;
+ case QD_ROUTER_CONFIG_AUTO_LINK: qdra_config_auto_link_delete_CT(core, query, name, identity); break;
+ case QD_ROUTER_CONNECTION: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_TCP_CONNECTION: break;
+ case QD_ROUTER_HTTP_REQUEST_INFO: break;
+ case QD_ROUTER_ROUTER: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_LINK: break;
+ case QD_ROUTER_ADDRESS: break;
+ case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_EXCHANGE: qdra_config_exchange_delete_CT(core, query, name, identity); break;
+ case QD_ROUTER_BINDING: qdra_config_binding_delete_CT(core, query, name, identity); break;
+ case QD_ROUTER_CONN_LINK_ROUTE: qdra_conn_link_route_delete_CT(core, query, name, identity); break;
+ }
+ }
qdr_field_free(action->args.agent.name);
qdr_field_free(action->args.agent.identity);
@@ -501,21 +507,23 @@ static void qdr_manage_update_CT(qdr_core_t *core, qdr_action_t *action, bool di
qdr_query_t *query = action->args.agent.query;
qd_parsed_field_t *in_body = action->args.agent.in_body;
- switch (query->entity_type) {
- case QD_ROUTER_CONFIG_ADDRESS: break;
- case QD_ROUTER_CONFIG_LINK_ROUTE: break;
- case QD_ROUTER_CONFIG_AUTO_LINK: break;
- case QD_ROUTER_CONNECTION: qdra_connection_update_CT(core, name, identity, query, in_body); break;
- case QD_ROUTER_TCP_CONNECTION: break;
- case QD_ROUTER_HTTP_REQUEST_INFO: break;
- case QD_ROUTER_ROUTER: break;
- case QD_ROUTER_LINK: qdra_link_update_CT(core, name, identity, query, in_body); break;
- case QD_ROUTER_ADDRESS: break;
- case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
- case QD_ROUTER_EXCHANGE: break;
- case QD_ROUTER_BINDING: break;
- case QD_ROUTER_CONN_LINK_ROUTE: break;
- }
+ if (!discard) {
+ switch (query->entity_type) {
+ case QD_ROUTER_CONFIG_ADDRESS: break;
+ case QD_ROUTER_CONFIG_LINK_ROUTE: break;
+ case QD_ROUTER_CONFIG_AUTO_LINK: break;
+ case QD_ROUTER_CONNECTION: qdra_connection_update_CT(core, name, identity, query, in_body); break;
+ case QD_ROUTER_TCP_CONNECTION: break;
+ case QD_ROUTER_HTTP_REQUEST_INFO: break;
+ case QD_ROUTER_ROUTER: break;
+ case QD_ROUTER_LINK: qdra_link_update_CT(core, name, identity, query, in_body); break;
+ case QD_ROUTER_ADDRESS: break;
+ case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, false); break;
+ case QD_ROUTER_EXCHANGE: break;
+ case QD_ROUTER_BINDING: break;
+ case QD_ROUTER_CONN_LINK_ROUTE: break;
+ }
+ }
qdr_field_free(action->args.agent.name);
qdr_field_free(action->args.agent.identity);
@@ -538,7 +546,7 @@ static void qdrh_query_get_first_CT(qdr_core_t *core, qdr_action_t *action, bool
case QD_ROUTER_ROUTER: qdra_router_get_first_CT(core, query, offset); break;
case QD_ROUTER_CONNECTION: qdra_connection_get_first_CT(core, query, offset); break;
case QD_ROUTER_TCP_CONNECTION: qdra_tcp_connection_get_first_CT(core, query, offset); break;
- case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_first_CT(core, query, offset); break;
+ case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_first_CT(core, query, offset); break;
case QD_ROUTER_LINK: qdra_link_get_first_CT(core, query, offset); break;
case QD_ROUTER_ADDRESS: qdra_address_get_first_CT(core, query, offset); break;
case QD_ROUTER_FORBIDDEN: qdr_agent_forbidden(core, query, true); break;
@@ -562,7 +570,7 @@ static void qdrh_query_get_next_CT(qdr_core_t *core, qdr_action_t *action, bool
case QD_ROUTER_ROUTER: qdra_router_get_next_CT(core, query); break;
case QD_ROUTER_CONNECTION: qdra_connection_get_next_CT(core, query); break;
case QD_ROUTER_TCP_CONNECTION: qdra_tcp_connection_get_next_CT(core, query); break;
- case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_next_CT(core, query); break;
+ case QD_ROUTER_HTTP_REQUEST_INFO: qdra_http_request_info_get_next_CT(core, query); break;
case QD_ROUTER_LINK: qdra_link_get_next_CT(core, query); break;
case QD_ROUTER_ADDRESS: qdra_address_get_next_CT(core, query); break;
case QD_ROUTER_FORBIDDEN: break;
diff --git a/src/router_core/route_tables.c b/src/router_core/route_tables.c
index ef831a0..625936f 100644
--- a/src/router_core/route_tables.c
+++ b/src/router_core/route_tables.c
@@ -359,6 +359,9 @@ static void qdr_add_router_CT(qdr_core_t *core, qdr_action_t *action, bool disca
static void qdr_del_router_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
{
+ if (!!discard)
+ return;
+
int router_maskbit = action->args.route_table.router_maskbit;
if (router_maskbit >= qd_bitmask_width() || router_maskbit < 0) {
@@ -413,6 +416,9 @@ static void qdr_del_router_CT(qdr_core_t *core, qdr_action_t *action, bool disca
static void qdr_set_link_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
{
+ if (!!discard)
+ return;
+
int router_maskbit = action->args.route_table.router_maskbit;
int conn_maskbit = action->args.route_table.link_maskbit; // "link" identifies a connection, not an amqp link
@@ -447,6 +453,9 @@ static void qdr_set_link_CT(qdr_core_t *core, qdr_action_t *action, bool discard
static void qdr_remove_link_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
{
+ if (!!discard)
+ return;
+
int router_maskbit = action->args.route_table.router_maskbit;
if (router_maskbit >= qd_bitmask_width() || router_maskbit < 0) {
@@ -466,6 +475,9 @@ static void qdr_remove_link_CT(qdr_core_t *core, qdr_action_t *action, bool disc
static void qdr_set_next_hop_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
{
+ if (!!discard)
+ return;
+
int router_maskbit = action->args.route_table.router_maskbit;
int nh_router_maskbit = action->args.route_table.nh_router_maskbit;
@@ -499,6 +511,9 @@ static void qdr_set_next_hop_CT(qdr_core_t *core, qdr_action_t *action, bool dis
static void qdr_remove_next_hop_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
{
+ if (!!discard)
+ return;
+
int router_maskbit = action->args.route_table.router_maskbit;
if (router_maskbit >= qd_bitmask_width() || router_maskbit < 0) {
@@ -513,6 +528,9 @@ static void qdr_remove_next_hop_CT(qdr_core_t *core, qdr_action_t *action, bool
static void qdr_set_cost_CT(qdr_core_t *core, qdr_action_t *action, bool discard)
{
+ if (!!discard)
+ return;
+
int router_maskbit = action->args.route_table.router_maskbit;
int cost = action->args.route_table.cost;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org