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