From 8ad76093e682ee735314a6768709b77a09d152ec Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Wed, 5 Nov 2008 17:09:33 +0000 Subject: Cluster: clean up connections when a member leaves the cluster. Fixed a memory error in cluster_test and some reporting errors in test scripts. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@711623 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/cluster/Cluster.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'cpp/src/qpid/cluster/Cluster.cpp') diff --git a/cpp/src/qpid/cluster/Cluster.cpp b/cpp/src/qpid/cluster/Cluster.cpp index 70c73191ee..f6022aa5b8 100644 --- a/cpp/src/qpid/cluster/Cluster.cpp +++ b/cpp/src/qpid/cluster/Cluster.cpp @@ -565,6 +565,17 @@ void Cluster::memberUpdate(Lock& l) { } mgmtObject->set_members(urlstr); } + + //close connections belonging to members that have now been excluded + for (ConnectionMap::iterator i = connections.begin(); i != connections.end();) { + MemberId member = i->first.getMember(); + if (member != myId && !map.isMember(member)) { + i->second->left(); + connections.erase(i++); + } else { + i++; + } + } } std::ostream& operator<<(std::ostream& o, const Cluster& cluster) { -- cgit v1.2.1