summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/RegistryI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/RegistryI.cpp')
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index b5c58b51583..73ff0e21a4f 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -167,6 +167,25 @@ RegistryI::~RegistryI()
bool
RegistryI::start()
{
+ try
+ {
+ if(!startImpl())
+ {
+ stop();
+ return false;
+ }
+ }
+ catch(...)
+ {
+ stop();
+ throw;
+ }
+ return true;
+}
+
+bool
+RegistryI::startImpl()
+{
assert(_communicator);
PropertiesPtr properties = _communicator->getProperties();
@@ -687,7 +706,10 @@ RegistryI::stop()
// ensure that there will be no more invocations on IceStorm once
// it's shutdown.
//
- _database->destroyTopics();
+ if(_database)
+ {
+ _database->destroyTopics();
+ }
try
{
@@ -1028,6 +1050,9 @@ RegistryI::getPermissionsVerifier(const ObjectAdapterPtr& adapter,
{
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
verifier = _communicator->propertyToProxy(verifierProperty);
}
catch(const ProxyParseException&)
@@ -1110,6 +1135,9 @@ RegistryI::getPermissionsVerifier(const ObjectAdapterPtr& adapter,
Glacier2::PermissionsVerifierPrx verifierPrx;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
//
// Set the permission verifier proxy locator to the internal
// locator. We can't use the "public" locator, this could lead
@@ -1151,6 +1179,9 @@ RegistryI::getSSLPermissionsVerifier(const IceGrid::LocatorPrx& locator, const s
{
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
verifier = _communicator->propertyToProxy(verifierProperty);
}
catch(const ProxyParseException&)
@@ -1194,6 +1225,9 @@ RegistryI::getSSLPermissionsVerifier(const IceGrid::LocatorPrx& locator, const s
Glacier2::SSLPermissionsVerifierPrx verifierPrx;
try
{
+#if defined(__BCPLUSPLUS__) && (__BCPLUSPLUS__ >= 0x0600)
+ IceUtil::DummyBCC dummy;
+#endif
//
// Set the permission verifier proxy locator to the internal
// locator. We can't use the "public" locator, this could lead