summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/NodeSessionManager.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-11-10 14:34:52 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-11-10 14:34:52 +0000
commitd8480f31455c708d0072a8d1a6a28f4b19bd647e (patch)
tree6d282b3fe4bf9ce7fe08c6da6b728f1f9912d76f /cpp/src/IceGrid/NodeSessionManager.cpp
parentFilter out IPv6 addresses in getLocalHosts (diff)
downloadice-d8480f31455c708d0072a8d1a6a28f4b19bd647e.tar.bz2
ice-d8480f31455c708d0072a8d1a6a28f4b19bd647e.tar.xz
ice-d8480f31455c708d0072a8d1a6a28f4b19bd647e.zip
Memory leak fixes
Diffstat (limited to 'cpp/src/IceGrid/NodeSessionManager.cpp')
-rw-r--r--cpp/src/IceGrid/NodeSessionManager.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/cpp/src/IceGrid/NodeSessionManager.cpp b/cpp/src/IceGrid/NodeSessionManager.cpp
index 71981be12fd..1bef61986af 100644
--- a/cpp/src/IceGrid/NodeSessionManager.cpp
+++ b/cpp/src/IceGrid/NodeSessionManager.cpp
@@ -140,14 +140,14 @@ NodeSessionKeepAliveThread::createSessionImpl(const InternalRegistryPrx& registr
{
timeout = IceUtil::Time::seconds(t / 2);
}
- _node->addObserver(_name, session->getObserver());
+ _node->addObserver(session, session->getObserver());
return session;
}
void
NodeSessionKeepAliveThread::destroySession(const NodeSessionPrx& session)
{
- _node->removeObserver(_name);
+ _node->removeObserver(session);
try
{
@@ -185,6 +185,8 @@ NodeSessionKeepAliveThread::keepAlive(const NodeSessionPrx& session)
}
catch(const Ice::LocalException& ex)
{
+ _node->removeObserver(session);
+
if(_node->getTraceLevels() && _node->getTraceLevels()->replica > 0)
{
Ice::Trace out(_node->getTraceLevels()->logger, _node->getTraceLevels()->replicaCat);
@@ -343,6 +345,7 @@ NodeSessionManager::replicaRemoved(const InternalRegistryPrx& replica)
}
if(thread)
{
+ _node->removeObserver(thread->getSession()); // Needs to be done here because we don't destroy the session.
thread->terminate(false); // Don't destroy the session, the replica is being shutdown!
thread->getThreadControl().join();
}