summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/cluster/Cluster.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/cluster/Cluster.cpp')
-rw-r--r--cpp/src/qpid/cluster/Cluster.cpp11
1 files changed, 11 insertions, 0 deletions
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) {