summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/ServerI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2014-11-25 15:54:02 +0100
committerBenoit Foucher <benoit@zeroc.com>2014-11-25 15:54:02 +0100
commit051b673466158b7544b2f217c66a44298ea57326 (patch)
tree0bbd844c5340cfe08918b13f0c3eb6c2568bc710 /cpp/src/IceGrid/ServerI.cpp
parentFix for ICE-5970: use smart pointer instead of raw pointer for the lookup object (diff)
downloadice-051b673466158b7544b2f217c66a44298ea57326.tar.bz2
ice-051b673466158b7544b2f217c66a44298ea57326.tar.xz
ice-051b673466158b7544b2f217c66a44298ea57326.zip
Fixed ICE-5668: fixed race condition on server load which could result in a client receiving Ice::NotRegisteredException
Diffstat (limited to 'cpp/src/IceGrid/ServerI.cpp')
-rw-r--r--cpp/src/IceGrid/ServerI.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp
index cbd97b94b0b..77fc235bf31 100644
--- a/cpp/src/IceGrid/ServerI.cpp
+++ b/cpp/src/IceGrid/ServerI.cpp
@@ -1237,7 +1237,12 @@ ServerI::load(const AMD_Node_loadServerPtr& amdCB, const InternalServerDescripto
updateRevision(desc->uuid, desc->revision);
}
- if(amdCB)
+ if(!_desc)
+ {
+ _load->addCallback(amdCB);
+ return 0;
+ }
+ else if(amdCB)
{
AdapterPrxDict adapters;
for(ServerAdapterDict::const_iterator p = _adapters.begin(); p != _adapters.end(); ++p)