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/02/15 21:48:32 UTC

qpid-dispatch git commit: DISPATCH-188: Fetch all settings from policy engine

Repository: qpid-dispatch
Updated Branches:
  refs/heads/crolke-DISPATCH-188-1 0ed45b60c -> b75f22e38


DISPATCH-188: Fetch all settings from policy engine


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

Branch: refs/heads/crolke-DISPATCH-188-1
Commit: b75f22e3860effc9ef58403ef1f46f4a638ddb0c
Parents: 0ed45b6
Author: Chuck Rolke <cr...@redhat.com>
Authored: Mon Feb 15 15:48:14 2016 -0500
Committer: Chuck Rolke <cr...@redhat.com>
Committed: Mon Feb 15 15:48:14 2016 -0500

----------------------------------------------------------------------
 src/policy.c         | 41 +++++++++++++++++++----------------------
 src/policy_private.h |  4 ++--
 2 files changed, 21 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/b75f22e3/src/policy.c
----------------------------------------------------------------------
diff --git a/src/policy.c b/src/policy.c
index bddcef9..5873491 100644
--- a/src/policy.c
+++ b/src/policy.c
@@ -226,19 +226,6 @@ void qd_policy_socket_close(void *context, const qd_connection_t *conn)
 }
 
 
-int _pyGetInt(PyObject *dict, const char *key)
-{
-    PyObject *pkey = PyString_FromString(key);
-    PyObject *val = PyObject_GetItem(dict, pkey);
-    long res = 0;
-    if (val) {
-        res = PyInt_AsLong(val);
-    }
-    Py_XDECREF(pkey);
-    Py_XDECREF(val);
-    return (int)res;
-}
-
 //
 // Functions related to authenticated connection denial.
 // An AMQP Open has been received over some connection.
@@ -306,14 +293,16 @@ bool qd_policy_open_lookup_user(
             return false;
         }
         Py_XDECREF(result2);
-        settings->maxFrameSize     = _pyGetInt(upolicy, "maxFrameSize");
-        settings->maxMessageSize   = _pyGetInt(upolicy, "maxMessageSize");
-        settings->maxSessionWindow = _pyGetInt(upolicy, "maxSessionWindow");
-        settings->maxSessions      = _pyGetInt(upolicy, "maxSessions");
-        settings->maxSenders       = _pyGetInt(upolicy, "maxSenders");
-        settings->maxReceivers     = _pyGetInt(upolicy, "maxReceivers");
-        settings->allowAnonymousSender = false; // TODO:
-        settings->allowDynamicSrc      = false; // TODO:
+        settings->maxFrameSize         = qd_entity_opt_long((qd_entity_t*)upolicy, "maxFrameSize", 0);
+        settings->maxMessageSize       = qd_entity_opt_long((qd_entity_t*)upolicy, "maxMessageSize", 0);
+        settings->maxSessionWindow     = qd_entity_opt_long((qd_entity_t*)upolicy, "maxSessionWindow", 0);
+        settings->maxSessions          = qd_entity_opt_long((qd_entity_t*)upolicy, "maxSessions", 0);
+        settings->maxSenders           = qd_entity_opt_long((qd_entity_t*)upolicy, "maxSenders", 0);
+        settings->maxReceivers         = qd_entity_opt_long((qd_entity_t*)upolicy, "maxReceivers", 0);
+        settings->allowAnonymousSender = qd_entity_opt_bool((qd_entity_t*)upolicy, "allowAnonymousSender", false);
+        settings->allowDynamicSrc      = qd_entity_opt_bool((qd_entity_t*)upolicy, "allowDynamicSrc", false);
+        settings->sources              = qd_entity_get_string((qd_entity_t*)upolicy, "sources");
+        settings->targets              = qd_entity_get_string((qd_entity_t*)upolicy, "targets");
         Py_XDECREF(upolicy);
     }
     Py_XDECREF(module);
@@ -364,6 +353,7 @@ void qd_policy_amqp_open(void *context, bool discard)
 #define SETTINGS_NAME_SIZE 256
         char settings_name[SETTINGS_NAME_SIZE];
         uint32_t conn_id = qd_conn->connection_id;
+        // TODO: settings need to be cached and kept beyond the open
         qd_policy_settings_t settings;
         memset(&settings, 0, sizeof(settings));
 
@@ -378,7 +368,14 @@ void qd_policy_amqp_open(void *context, bool discard)
                 pn_transport_set_max_frame(pn_trans, settings.maxFrameSize);
             if (settings.maxSessions > 0)
                 pn_transport_set_channel_max(pn_trans, settings.maxSessions);
-            // TODO: set the rest...
+
+            // HACK ALERT: The settings were fetched, used for the Open,
+            // and now they discarded.
+            if (settings.sources)
+                free(settings.sources);
+            if (settings.targets)
+                free(settings.targets);
+
             if (pn_connection_state(conn) & PN_LOCAL_UNINIT)
                 pn_connection_open(conn);
             qd_connection_manager_connection_opened(qd_conn);

http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/b75f22e3/src/policy_private.h
----------------------------------------------------------------------
diff --git a/src/policy_private.h b/src/policy_private.h
index 8c3a391..03d58ed 100644
--- a/src/policy_private.h
+++ b/src/policy_private.h
@@ -41,8 +41,8 @@ struct qd_policy__settings_s {
     int  maxReceivers;
     bool allowDynamicSrc;
     bool allowAnonymousSender;
-    // char * sources; // TODO:
-    // char * targets; // TODO:
+    char *sources;
+    char *targets;
 };
 
 typedef struct qd_policy__settings_s qd_policy_settings_t;


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