You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ch...@apache.org on 2016/03/24 20:41:24 UTC

qpid-dispatch git commit: Workaround PROTON-1133: port number included in AMQP Open hostname. Enable Proton clients up to and including 0.12.1 to work with dispatch policy.

Repository: qpid-dispatch
Updated Branches:
  refs/heads/crolke-DISPATCH-188-1 de2ff34b1 -> 5b214a9b7


Workaround PROTON-1133: port number included in AMQP Open hostname.
Enable Proton clients up to and including 0.12.1 to work with dispatch policy.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/5b214a9b
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/5b214a9b
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/5b214a9b

Branch: refs/heads/crolke-DISPATCH-188-1
Commit: 5b214a9b7dd116ff6c636186b22abe0b0c1e9a63
Parents: de2ff34
Author: Chuck Rolke <cr...@redhat.com>
Authored: Thu Mar 24 15:39:58 2016 -0400
Committer: Chuck Rolke <cr...@redhat.com>
Committed: Thu Mar 24 15:39:58 2016 -0400

----------------------------------------------------------------------
 src/policy.c                                   | 15 ++++++++++++---
 tests/policy-1/management-access.json          |  4 ++--
 tests/policy-2/test-router-with-policy.json.in |  2 +-
 3 files changed, 15 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/5b214a9b/src/policy.c
----------------------------------------------------------------------
diff --git a/src/policy.c b/src/policy.c
index 3094aa2..83bfca0 100644
--- a/src/policy.c
+++ b/src/policy.c
@@ -294,6 +294,15 @@ bool qd_policy_open_lookup_user(
     uint64_t    conn_id,
     qd_policy_settings_t *settings)
 {
+    // TODO: crolke 2016-03-24 - Workaround for PROTON-1133: Port number is included in Open hostname
+    // Strip the ':NNNN', if any, from the app name so that policy will work with proton 0.12
+    char appname[HOST_NAME_MAX + 1];
+    strncpy(appname, app, HOST_NAME_MAX);
+    appname[HOST_NAME_MAX] = 0;
+    char * colonp = strstr(appname, ":");
+    if (colonp) {
+        *colonp = 0;
+    }
     // Lookup the user/host/app for allow/deny and to get settings name
     bool res = false;
     qd_python_lock_state_t lock_state = qd_python_lock();
@@ -303,7 +312,7 @@ bool qd_policy_open_lookup_user(
         if (lookup_user) {
             PyObject *result = PyObject_CallFunction(lookup_user, "(OssssK)",
                                                      (PyObject *)policy->py_policy_manager,
-                                                     username, hostip, app, conn_name, conn_id);
+                                                     username, hostip, appname, conn_name, conn_id);
             if (result) {
                 const char *res_string = PyString_AsString(result);
                 strncpy(name_buf, res_string, name_buf_size);
@@ -335,7 +344,7 @@ bool qd_policy_open_lookup_user(
             if (lookup_settings) {
                 PyObject *result2 = PyObject_CallFunction(lookup_settings, "(OssO)",
                                                         (PyObject *)policy->py_policy_manager,
-                                                        app, name_buf, upolicy);
+                                                        appname, name_buf, upolicy);
                 if (result2) {
                     settings->maxFrameSize         = qd_entity_opt_long((qd_entity_t*)upolicy, "maxFrameSize", 0);
                     settings->maxMessageSize       = qd_entity_opt_long((qd_entity_t*)upolicy, "maxMessageSize", 0);
@@ -369,7 +378,7 @@ bool qd_policy_open_lookup_user(
     qd_log(policy->log_source, 
            POLICY_LOG_LEVEL, 
            "Policy AMQP Open lookup_user: %s, hostip: %s, app: %s, connection: %s. Usergroup: '%s'%s",
-           username, hostip, app, conn_name, name_buf, (res ? "" : " Internal error."));
+           username, hostip, appname, conn_name, name_buf, (res ? "" : " Internal error."));
 
     return res;
 }

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/5b214a9b/tests/policy-1/management-access.json
----------------------------------------------------------------------
diff --git a/tests/policy-1/management-access.json b/tests/policy-1/management-access.json
index 6eb2057..960c4a1 100644
--- a/tests/policy-1/management-access.json
+++ b/tests/policy-1/management-access.json
@@ -18,10 +18,10 @@
 ##
 
 # A policy to allow unrestricted access to management
-# through port 22000
+# from host 0.0.0.0
 [
   ["policyRuleset", {
-      "applicationName": "0.0.0.0:22000",
+      "applicationName": "0.0.0.0",
       "maxConnections": 50,
       "maxConnPerUser": 5,
       "maxConnPerHost": 20,

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/5b214a9b/tests/policy-2/test-router-with-policy.json.in
----------------------------------------------------------------------
diff --git a/tests/policy-2/test-router-with-policy.json.in b/tests/policy-2/test-router-with-policy.json.in
index e28d75c..5f96fdf 100644
--- a/tests/policy-2/test-router-with-policy.json.in
+++ b/tests/policy-2/test-router-with-policy.json.in
@@ -146,7 +146,7 @@
       }
   }],
   ["policyRuleset", {
-      "applicationName": "0.0.0.0:21000",
+      "applicationName": "0.0.0.0",
       "maxConnections": 50,
       "maxConnPerUser": 5,
       "maxConnPerHost": 20,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org