summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorPavel Moravec <pmoravec@apache.org>2014-02-26 14:12:56 +0000
committerPavel Moravec <pmoravec@apache.org>2014-02-26 14:12:56 +0000
commit3e67aef7b465cbc3cc2a4d104b87d7032f455e0e (patch)
treef8c06128b13e95749852ca57776ed3c25b16a24e /cpp/src
parentc1b0d1b234f0d002522e00bc83fe5164b7abb0d7 (diff)
downloadqpid-python-3e67aef7b465cbc3cc2a4d104b87d7032f455e0e.tar.gz
QPID-5561: QPID-5565: Broker->ACL module improvements
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1572059 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/broker/Broker.cpp20
-rw-r--r--cpp/src/qpid/broker/QueueFactory.cpp4
-rw-r--r--cpp/src/qpid/broker/QueueFactory.h3
-rwxr-xr-xcpp/src/tests/acl.py16
4 files changed, 27 insertions, 16 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp
index 7f076e92cd..0010f602c1 100644
--- a/cpp/src/qpid/broker/Broker.cpp
+++ b/cpp/src/qpid/broker/Broker.cpp
@@ -1306,12 +1306,20 @@ std::pair<boost::shared_ptr<Queue>, bool> Broker::createQueue(
params.insert(make_pair(acl::PROP_AUTODELETE, settings.autodelete ? _TRUE : _FALSE));
params.insert(make_pair(acl::PROP_POLICYTYPE, settings.getLimitPolicy()));
params.insert(make_pair(acl::PROP_PAGING, settings.paging ? _TRUE : _FALSE));
- params.insert(make_pair(acl::PROP_MAXPAGES, boost::lexical_cast<string>(settings.maxPages)));
- params.insert(make_pair(acl::PROP_MAXPAGEFACTOR, boost::lexical_cast<string>(settings.pageFactor)));
- params.insert(make_pair(acl::PROP_MAXQUEUECOUNT, boost::lexical_cast<string>(settings.maxDepth.getCount())));
- params.insert(make_pair(acl::PROP_MAXQUEUESIZE, boost::lexical_cast<string>(settings.maxDepth.getSize())));
- params.insert(make_pair(acl::PROP_MAXFILECOUNT, boost::lexical_cast<string>(settings.maxFileCount)));
- params.insert(make_pair(acl::PROP_MAXFILESIZE, boost::lexical_cast<string>(settings.maxFileSize)));
+ if (settings.paging) {
+ params.insert(make_pair(acl::PROP_MAXPAGES, boost::lexical_cast<string>(settings.maxPages ? settings.maxPages : DEFAULT_MAX_PAGES)));
+ params.insert(make_pair(acl::PROP_MAXPAGEFACTOR, boost::lexical_cast<string>(settings.pageFactor ? settings.pageFactor : DEFAULT_PAGE_FACTOR)));
+ }
+ if (settings.maxDepth.hasCount())
+ params.insert(make_pair(acl::PROP_MAXQUEUECOUNT, boost::lexical_cast<string>(settings.maxDepth.getCount() ? settings.maxDepth.getCount() : std::numeric_limits<uint64_t>::max())));
+ if (settings.maxDepth.hasSize())
+ params.insert(make_pair(acl::PROP_MAXQUEUESIZE, boost::lexical_cast<string>(settings.maxDepth.getSize() ? settings.maxDepth.getSize() : std::numeric_limits<uint64_t>::max())));
+ else
+ params.insert(make_pair(acl::PROP_MAXQUEUESIZE, boost::lexical_cast<string>(config.queueLimit)));
+ if (settings.durable) {
+ params.insert(make_pair(acl::PROP_MAXFILECOUNT, boost::lexical_cast<string>(settings.maxFileCount ? settings.maxFileCount : 8)));
+ params.insert(make_pair(acl::PROP_MAXFILESIZE, boost::lexical_cast<string>(settings.maxFileSize ? settings.maxFileSize : 24)));
+ }
if (!acl->authorise(userId,acl::ACT_CREATE,acl::OBJ_QUEUE,name,&params) )
throw framing::UnauthorizedAccessException(QPID_MSG("ACL denied queue create request from " << userId));
diff --git a/cpp/src/qpid/broker/QueueFactory.cpp b/cpp/src/qpid/broker/QueueFactory.cpp
index 08988ed4ac..b4eccd646d 100644
--- a/cpp/src/qpid/broker/QueueFactory.cpp
+++ b/cpp/src/qpid/broker/QueueFactory.cpp
@@ -80,8 +80,8 @@ boost::shared_ptr<Queue> QueueFactory::create(const std::string& name, const Que
QPID_LOG(warning, "Cannot create paged queue; no paging directory enabled");
} else {
queue->messages = std::auto_ptr<Messages>(new PagedQueue(name, broker->getPagingDir().getPath(),
- settings.maxPages ? settings.maxPages : 4,
- settings.pageFactor ? settings.pageFactor : 1,
+ settings.maxPages ? settings.maxPages : DEFAULT_MAX_PAGES,
+ settings.pageFactor ? settings.pageFactor : DEFAULT_PAGE_FACTOR,
broker->getProtocolRegistry(), broker->getExpiryPolicy()));
}
} else if (settings.lvqKey.empty()) {//LVQ already handled above
diff --git a/cpp/src/qpid/broker/QueueFactory.h b/cpp/src/qpid/broker/QueueFactory.h
index b6a79f1f1a..585983ba25 100644
--- a/cpp/src/qpid/broker/QueueFactory.h
+++ b/cpp/src/qpid/broker/QueueFactory.h
@@ -25,6 +25,9 @@
#include "qpid/types/Variant.h"
#include <boost/shared_ptr.hpp>
+#define DEFAULT_MAX_PAGES 4
+#define DEFAULT_PAGE_FACTOR 1
+
namespace qpid {
namespace management {
class Manageable;
diff --git a/cpp/src/tests/acl.py b/cpp/src/tests/acl.py
index c9b2db64db..ec6b229ba4 100755
--- a/cpp/src/tests/acl.py
+++ b/cpp/src/tests/acl.py
@@ -1234,7 +1234,7 @@ class ACLTests(TestBase010):
queue_options = {}
queue_options["qpid.file_count"] = 200
queue_options["qpid.file_size"] = 500
- session.queue_declare(queue="qf5", exclusive=True, arguments=queue_options)
+ session.queue_declare(queue="qf5", exclusive=True, durable=True, arguments=queue_options)
self.fail("ACL should deny queue create request with name=qf5, qpid.file_size=500 and qpid.file_count=200");
except qpid.session.SessionException, e:
self.assertEqual(403,e.args[0].error_code)
@@ -1388,7 +1388,7 @@ class ACLTests(TestBase010):
queue_options = {}
queue_options["qpid.file_count"] = 200
queue_options["qpid.file_size"] = 500
- session.queue_declare(queue="qfd5", arguments=queue_options)
+ session.queue_declare(queue="qfd5", durable=True, arguments=queue_options)
self.fail("ACL should deny queue create request with name=qfd5 filemaxsizeupperlimit=500 filemaxcountupperlimit=200");
except qpid.session.SessionException, e:
self.assertEqual(403,e.args[0].error_code)
@@ -1398,7 +1398,7 @@ class ACLTests(TestBase010):
queue_options = {}
queue_options["qpid.file_count"] = 100
queue_options["qpid.file_size"] = 500
- session.queue_declare(queue="qfd5", arguments=queue_options)
+ session.queue_declare(queue="qfd5", durable=True, arguments=queue_options)
except qpid.session.SessionException, e:
if (403 == e.args[0].error_code):
self.fail("ACL should allow queue create request with name=qfd5 filemaxsizeupperlimit=500 filemaxcountupperlimit=200");
@@ -1407,7 +1407,7 @@ class ACLTests(TestBase010):
queue_options = {}
queue_options["qpid.file_count"] = 49
queue_options["qpid.file_size"] = 100
- session.queue_declare(queue="qfd6", arguments=queue_options)
+ session.queue_declare(queue="qfd6", durable=True, arguments=queue_options)
self.fail("ACL should deny queue create request with name=qfd6 filemaxsizeupperlimit=100 filemaxcountupperlimit=49");
except qpid.session.SessionException, e:
self.assertEqual(403,e.args[0].error_code)
@@ -1417,7 +1417,7 @@ class ACLTests(TestBase010):
queue_options = {}
queue_options["qpid.file_count"] = 101
queue_options["qpid.file_size"] = 100
- session.queue_declare(queue="qfd6", arguments=queue_options)
+ session.queue_declare(queue="qfd6", durable=True, arguments=queue_options)
self.fail("ACL should allow queue create request with name=qfd6 filemaxsizeupperlimit=100 filemaxcountupperlimit=101");
except qpid.session.SessionException, e:
self.assertEqual(403,e.args[0].error_code)
@@ -1427,7 +1427,7 @@ class ACLTests(TestBase010):
queue_options = {}
queue_options["qpid.file_count"] = 100
queue_options["qpid.file_size"] = 49
- session.queue_declare(queue="qfd6", arguments=queue_options)
+ session.queue_declare(queue="qfd6", durable=True, arguments=queue_options)
self.fail("ACL should deny queue create request with name=qfd6 filemaxsizeupperlimit=49 filemaxcountupperlimit=100");
except qpid.session.SessionException, e:
self.assertEqual(403,e.args[0].error_code)
@@ -1437,7 +1437,7 @@ class ACLTests(TestBase010):
queue_options = {}
queue_options["qpid.file_count"] = 100
queue_options["qpid.file_size"] =101
- session.queue_declare(queue="qfd6", arguments=queue_options)
+ session.queue_declare(queue="qfd6", durable=True, arguments=queue_options)
self.fail("ACL should deny queue create request with name=qfd6 filemaxsizeupperlimit=101 filemaxcountupperlimit=100");
except qpid.session.SessionException, e:
self.assertEqual(403,e.args[0].error_code)
@@ -1447,7 +1447,7 @@ class ACLTests(TestBase010):
queue_options = {}
queue_options["qpid.file_count"] = 50
queue_options["qpid.file_size"] = 50
- session.queue_declare(queue="qfd6", arguments=queue_options)
+ session.queue_declare(queue="qfd6", durable=True, arguments=queue_options)
except qpid.session.SessionException, e:
if (403 == e.args[0].error_code):
self.fail("ACL should allow queue create request with name=qfd6 filemaxsizeupperlimit=50 filemaxcountupperlimit=50");