summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/ServerI.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2007-07-24 09:17:35 -0400
committerDwayne Boone <dwayne@zeroc.com>2007-07-24 09:17:35 -0400
commite603bacb014c8d03b64a601aee354d8dff25cca0 (patch)
tree11f1b528bb7d7973a2b1f8e2f9fec645169e8ed7 /cpp/src/IceGrid/ServerI.cpp
parentMerge branch 'master' of ssh://cvs.zeroc.com/home/git/ice (diff)
parenthttp://bugzilla.zeroc.com/bugzilla/show_bug.cgi?id=2312 - changed 64 bit bin ... (diff)
downloadice-e603bacb014c8d03b64a601aee354d8dff25cca0.tar.bz2
ice-e603bacb014c8d03b64a601aee354d8dff25cca0.tar.xz
ice-e603bacb014c8d03b64a601aee354d8dff25cca0.zip
Merge branch 'master' of ssh://cvs.zeroc.com/home/git/ice
Diffstat (limited to 'cpp/src/IceGrid/ServerI.cpp')
-rw-r--r--cpp/src/IceGrid/ServerI.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/cpp/src/IceGrid/ServerI.cpp b/cpp/src/IceGrid/ServerI.cpp
index 27fd7396399..2535bfc7abc 100644
--- a/cpp/src/IceGrid/ServerI.cpp
+++ b/cpp/src/IceGrid/ServerI.cpp
@@ -1153,7 +1153,13 @@ ServerI::adapterDeactivated(const string& id)
ServerCommandPtr command;
{
Lock sync(*this);
- if(_state == Active && _serverLifetimeAdapters.find(id) != _serverLifetimeAdapters.end())
+ while(_state == ServerI::Activating)
+ {
+ wait(); // Wait for activate() to set the state to WaitForActivation
+ }
+
+ if((_state == Active || _state == WaitForActivation) &&
+ _serverLifetimeAdapters.find(id) != _serverLifetimeAdapters.end())
{
setStateNoSync(Deactivating);
}
@@ -1440,12 +1446,13 @@ ServerI::deactivate()
Ice::ProcessPrx process;
{
Lock sync(*this);
- assert(_desc);
if(_state != Deactivating && _state != DeactivatingWaitForProcess)
{
return;
}
+ assert(_desc);
+
//
// If a process object is supposed to be registered and it's
// not set yet, we wait for the server to set this process