diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-11-25 15:54:02 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-11-25 15:54:02 +0100 |
commit | 051b673466158b7544b2f217c66a44298ea57326 (patch) | |
tree | 0bbd844c5340cfe08918b13f0c3eb6c2568bc710 /cpp/src/IceGrid/ServerI.cpp | |
parent | Fix for ICE-5970: use smart pointer instead of raw pointer for the lookup object (diff) | |
download | ice-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.cpp | 7 |
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) |