diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 9 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.h | 1 |
2 files changed, 7 insertions, 3 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 0a7ac99d39a..b02cf0a9ef5 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -1237,9 +1237,12 @@ ObjectAdapterI::updateLocatorRegistry(const IceInternal::LocatorInfoPtr& locator { try { - ProcessPtr servant = new ProcessI(_communicator); - Ice::ObjectPrx process = createDirectProxy(addWithUUID(servant)->ice_getIdentity()); - locatorRegistry->setServerProcessProxy(serverId, ProcessPrx::uncheckedCast(process)); + if(_processId.name == "") + { + ProcessPtr servant = new ProcessI(_communicator); + _processId = addWithUUID(servant)->ice_getIdentity(); + } + locatorRegistry->setServerProcessProxy(serverId, ProcessPrx::uncheckedCast(createDirectProxy(_processId))); } catch(const ServerNotFoundException&) { diff --git a/cpp/src/Ice/ObjectAdapterI.h b/cpp/src/Ice/ObjectAdapterI.h index 35b6d697a33..b0e567837c3 100644 --- a/cpp/src/Ice/ObjectAdapterI.h +++ b/cpp/src/Ice/ObjectAdapterI.h @@ -129,6 +129,7 @@ private: bool _noConfig; bool _threadPerConnection; size_t _threadPerConnectionStackSize; + Identity _processId; class ProcessI : public Process { |