DISPATCH-311: change default connection count values from 0 to 65535. Stop treating 0 as magic 'connection counting disabled' value.
Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/9d82b839 Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/9d82b839 Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/9d82b839 Branch: refs/heads/crolke-DISPATCH-311 Commit: 9d82b839fc0deaeaa4dafad85f0ff590fde3dc91 Parents: 7f51d58 Author: Chuck Rolke <[email protected]> Authored: Tue Jul 26 10:06:31 2016 -0400 Committer: Chuck Rolke <[email protected]> Committed: Tue Jul 26 10:06:31 2016 -0400 ---------------------------------------------------------------------- python/qpid_dispatch/management/qdrouter.json | 16 +++++----- .../policy/policy_local.py | 6 ++-- .../policy/policy_util.py | 6 ++-- src/policy.c | 33 +++++++------------- 4 files changed, 26 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/9d82b839/python/qpid_dispatch/management/qdrouter.json ---------------------------------------------------------------------- diff --git a/python/qpid_dispatch/management/qdrouter.json b/python/qpid_dispatch/management/qdrouter.json index 9c17241..a465550 100644 --- a/python/qpid_dispatch/management/qdrouter.json +++ b/python/qpid_dispatch/management/qdrouter.json @@ -1348,7 +1348,7 @@ "attributes": { "maxConnections": { "type": "integer", - "default": 0, + "default": 65535, "description": "Global maximum number of concurrent client connections allowed. This limit is always enforced even if no other policy settings have been defined.", "required": false, "create": true @@ -1356,7 +1356,7 @@ "enableVhostPolicy": { "type": "boolean", "default": false, - "description": "Enable vhost policy connection denial, and resource limit enforcement", + "description": "Enable vhost policy user groups, connection denial, and resource limit enforcement", "required": false, "create": true }, @@ -1392,22 +1392,22 @@ }, "maxConnections": { "type": "integer", - "default": 0, - "description": "Maximum number of concurrent client connections allowed. Zero implies no limit.", + "default": 65535, + "description": "Maximum number of concurrent client connections allowed.", "required": false, "create": true }, "maxConnectionsPerUser": { "type": "integer", - "default": 0, - "description": "Maximum number of concurrent client connections allowed for any single user. Zero implies no limit.", + "default": 65535, + "description": "Maximum number of concurrent client connections allowed for any single user.", "required": false, "create": true }, "maxConnectionsPerHost": { "type": "integer", - "default": 0, - "description": "Maximum number of concurrent client connections allowed for any remote host. Zero implies no limit.", + "default": 65535, + "description": "Maximum number of concurrent client connections allowed for any remote host.", "required": false, "create": true }, http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/9d82b839/python/qpid_dispatch_internal/policy/policy_local.py ---------------------------------------------------------------------- diff --git a/python/qpid_dispatch_internal/policy/policy_local.py b/python/qpid_dispatch_internal/policy/policy_local.py index d9af6a1..9b34f0f 100644 --- a/python/qpid_dispatch_internal/policy/policy_local.py +++ b/python/qpid_dispatch_internal/policy/policy_local.py @@ -273,9 +273,9 @@ class PolicyCompiler(object): """ cerror = [] # rulesets may not come through standard config so make nice defaults - policy_out[PolicyKeys.KW_MAXCONN] = 0 - policy_out[PolicyKeys.KW_MAXCONNPERHOST] = 0 - policy_out[PolicyKeys.KW_MAXCONNPERUSER] = 0 + policy_out[PolicyKeys.KW_MAXCONN] = 65535 + policy_out[PolicyKeys.KW_MAXCONNPERHOST] = 65535 + policy_out[PolicyKeys.KW_MAXCONNPERUSER] = 65535 policy_out[PolicyKeys.KW_USER_GROUPS] = {} policy_out[PolicyKeys.KW_INGRESS_HOST_GROUPS] = {} policy_out[PolicyKeys.KW_INGRESS_POLICIES] = {} http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/9d82b839/python/qpid_dispatch_internal/policy/policy_util.py ---------------------------------------------------------------------- diff --git a/python/qpid_dispatch_internal/policy/policy_util.py b/python/qpid_dispatch_internal/policy/policy_util.py index 1cb09d3..bacd078 100644 --- a/python/qpid_dispatch_internal/policy/policy_util.py +++ b/python/qpid_dispatch_internal/policy/policy_util.py @@ -293,9 +293,9 @@ class PolicyAppConnectionMgr(object): if host in self.per_host_state: n_host = len(self.per_host_state[host]) - allowbytotal = self.max_total == 0 or self.connections_active < self.max_total - allowbyuser = self.max_per_user == 0 or n_user < self.max_per_user - allowbyhost = self.max_per_host == 0 or n_host < self.max_per_host + allowbytotal = self.connections_active < self.max_total + allowbyuser = n_user < self.max_per_user + allowbyhost = n_host < self.max_per_host if allowbytotal and allowbyuser and allowbyhost: if not user in self.per_user_state: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/9d82b839/src/policy.c ---------------------------------------------------------------------- diff --git a/src/policy.c b/src/policy.c index aa67964..4786446 100644 --- a/src/policy.c +++ b/src/policy.c @@ -82,7 +82,7 @@ qd_policy_t *qd_policy(qd_dispatch_t *qd) policy->qd = qd; policy->log_source = qd_log_source("POLICY"); - policy->max_connection_limit = 0; + policy->max_connection_limit = 65535; policy->policyDir = 0; policy->enableVhostPolicy = false; policy->connections_processed= 0; @@ -110,7 +110,7 @@ void qd_policy_free(qd_policy_t *policy) qd_error_t qd_entity_configure_policy(qd_policy_t *policy, qd_entity_t *entity) { - policy->max_connection_limit = qd_entity_opt_long(entity, "maxConnections", 0); CHECK(); + policy->max_connection_limit = qd_entity_opt_long(entity, "maxConnections", 65535); CHECK(); if (policy->max_connection_limit < 0) return qd_error(QD_ERROR_CONFIG, "maxConnections must be >= 0"); policy->policyDir = @@ -192,22 +192,15 @@ bool qd_policy_socket_accept(void *context, const char *hostname) { qd_policy_t *policy = (qd_policy_t *)context; bool result = true; - - if (policy->max_connection_limit == 0) { - // Policy not in force; connection counted and allowed + if (n_connections < policy->max_connection_limit) { + // connection counted and allowed n_connections += 1; + qd_log(policy->log_source, QD_LOG_TRACE, "ALLOW Connection '%s' based on global connection count. N= %d", hostname, n_connections); } else { - // Policy in force - if (n_connections < policy->max_connection_limit) { - // connection counted and allowed - n_connections += 1; - qd_log(policy->log_source, QD_LOG_TRACE, "ALLOW Connection '%s' based on global connection count. N= %d", hostname, n_connections); - } else { - // connection denied - result = false; - n_denied += 1; - qd_log(policy->log_source, QD_LOG_INFO, "DENY Connection '%s' based on global connection count. N= %d", hostname, n_connections); - } + // connection denied + result = false; + n_denied += 1; + qd_log(policy->log_source, QD_LOG_INFO, "DENY Connection '%s' based on global connection count. N= %d", hostname, n_connections); } n_processed += 1; return result; @@ -247,11 +240,9 @@ void qd_policy_socket_close(void *context, const qd_connection_t *conn) } qd_python_unlock(lock_state); } - if (policy->max_connection_limit > 0) { - const char *hostname = qdpn_connector_name(conn->pn_cxtr); - qd_log(policy->log_source, QD_LOG_DEBUG, "Connection '%s' closed with resources n_sessions=%d, n_senders=%d, n_receivers=%d. N= %d.", - hostname, conn->n_sessions, conn->n_senders, conn->n_receivers, n_connections); - } + const char *hostname = qdpn_connector_name(conn->pn_cxtr); + qd_log(policy->log_source, QD_LOG_DEBUG, "Connection '%s' closed with resources n_sessions=%d, n_senders=%d, n_receivers=%d. nConnections= %d.", + hostname, conn->n_sessions, conn->n_senders, conn->n_receivers, n_connections); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
