diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-05-22 16:30:01 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-05-22 16:30:01 +0000 |
commit | 67b1e7d79f390dd5098aac0a226cc71775f4904d (patch) | |
tree | 81da7fc9bff0612eea851618a066c3463420e4ef /cpp/src/IceGrid/RegistryI.cpp | |
parent | Added session servant locator to secure access to session servants. (diff) | |
download | ice-67b1e7d79f390dd5098aac0a226cc71775f4904d.tar.bz2 ice-67b1e7d79f390dd5098aac0a226cc71775f4904d.tar.xz ice-67b1e7d79f390dd5098aac0a226cc71775f4904d.zip |
Amin object is now also per-session
Diffstat (limited to 'cpp/src/IceGrid/RegistryI.cpp')
-rw-r--r-- | cpp/src/IceGrid/RegistryI.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp index 8f0cf36eace..466d7261ac5 100644 --- a/cpp/src/IceGrid/RegistryI.cpp +++ b/cpp/src/IceGrid/RegistryI.cpp @@ -359,7 +359,8 @@ RegistryI::start(bool nowarn) clientAdapter->add(new QueryI(_communicator, _database), queryId); Identity adminId = _communicator->stringToIdentity(instanceName + "/Admin"); - adminAdapter->add(new AdminI(_database, this, _traceLevels), adminId); + _adminServant = new AdminI(_database, this, _traceLevels); + adminAdapter->add(_adminServant, adminId); Identity clientSessionMgrId = _communicator->stringToIdentity(instanceName + "/SessionManager"); _clientSessionManager = new ClientSessionManagerI(_database, sessionTimeout, _waitQueue); @@ -517,8 +518,13 @@ RegistryI::createAdminSession(const string& user, const string& password, const throw exc; } + // + // We let the connection access the administrative interface. + // + AdminPrx admin = AdminPrx::uncheckedCast(_sessionServantLocator->add(_adminServant, current.con)); + AdminSessionIPtr session = _adminSessionManager->create(user); - session->setServantLocator(_sessionServantLocator); + session->setServantLocator(_sessionServantLocator, admin); AdminSessionPrx proxy = AdminSessionPrx::uncheckedCast(_sessionServantLocator->add(session, current.con)); _clientReaper->add(new SessionReapable(current.adapter, session, proxy)); return proxy; @@ -601,8 +607,13 @@ RegistryI::createAdminSessionFromSecureConnection(const Ice::Current& current) throw exc; } + // + // We let the connection access the administrative interface. + // + AdminPrx admin = AdminPrx::uncheckedCast(_sessionServantLocator->add(_adminServant, current.con)); + AdminSessionIPtr session = _adminSessionManager->create(userDN); - session->setServantLocator(_sessionServantLocator); + session->setServantLocator(_sessionServantLocator, admin); AdminSessionPrx proxy = AdminSessionPrx::uncheckedCast(_sessionServantLocator->add(session, current.con)); _clientReaper->add(new SessionReapable(current.adapter, session, proxy)); return proxy; |