summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdminSessionI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2007-07-10 14:36:46 +0200
committerBenoit Foucher <benoit@zeroc.com>2007-07-10 14:36:46 +0200
commit869aeffd3663e026f469ae373de3122bcc5ea7bb (patch)
tree6dbc8ff6a7ff515eade6f045c10f9973d61f283f /cpp/src/IceGrid/AdminSessionI.cpp
parentCommited fix to fix 2286 (diff)
downloadice-869aeffd3663e026f469ae373de3122bcc5ea7bb.tar.bz2
ice-869aeffd3663e026f469ae373de3122bcc5ea7bb.tar.xz
ice-869aeffd3663e026f469ae373de3122bcc5ea7bb.zip
Fixed bug 2292
Diffstat (limited to 'cpp/src/IceGrid/AdminSessionI.cpp')
-rw-r--r--cpp/src/IceGrid/AdminSessionI.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/cpp/src/IceGrid/AdminSessionI.cpp b/cpp/src/IceGrid/AdminSessionI.cpp
index c8e49df1858..87d445f2abb 100644
--- a/cpp/src/IceGrid/AdminSessionI.cpp
+++ b/cpp/src/IceGrid/AdminSessionI.cpp
@@ -54,8 +54,9 @@ FileIteratorI::destroy(const Ice::Current& current)
_session->removeFileIterator(current.id, current);
}
-AdminSessionI::AdminSessionI(const string& id, const DatabasePtr& db, int timeout, const string& replicaName) :
- BaseSessionI(id, "admin", db),
+AdminSessionI::AdminSessionI(const string& id, const DatabasePtr& db, bool filters, int timeout,
+ const string& replicaName) :
+ BaseSessionI(id, "admin", db, filters),
_timeout(timeout),
_replicaName(replicaName)
{
@@ -475,8 +476,15 @@ AdminSessionFactory::AdminSessionFactory(const Ice::ObjectAdapterPtr& adapter,
_database(database),
_timeout(registry->getSessionTimeout()),
_reaper(reaper),
- _registry(registry)
+ _registry(registry),
+ _filters(false)
{
+ if(_adapter) // Not set if Glacier2 session manager adapter not enabled
+ {
+ Ice::PropertiesPtr properties = adapter->getCommunicator()->getProperties();
+ const_cast<bool&>(_filters) =
+ properties->getPropertyAsIntWithDefault("IceGrid.Registry.AdminSessionFilters", 1) > 0;
+ }
}
Glacier2::SessionPrx
@@ -499,14 +507,17 @@ AdminSessionFactory::createGlacier2Session(const string& sessionId, const Glacie
int timeout = 0;
if(ctl)
{
- try
+ if(_filters)
{
- ctl->identities()->add(ids);
- }
- catch(const Ice::LocalException&)
- {
- session->destroy(Ice::Current());
- return 0;
+ try
+ {
+ ctl->identities()->add(ids);
+ }
+ catch(const Ice::LocalException&)
+ {
+ session->destroy(Ice::Current());
+ return 0;
+ }
}
timeout = ctl->getSessionTimeout();
}
@@ -522,7 +533,7 @@ AdminSessionFactory::createGlacier2Session(const string& sessionId, const Glacie
AdminSessionIPtr
AdminSessionFactory::createSessionServant(const string& id)
{
- return new AdminSessionI(id, _database, _timeout, _registry->getName());
+ return new AdminSessionI(id, _database, _filters, _timeout, _registry->getName());
}
const TraceLevelsPtr&