From aba3a9bfc56a901f9450f8bcd448508543585b39 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Thu, 1 Jul 2010 19:23:43 +0000 Subject: Fix sporadic cluster core on exit. Fix a race condition that allows a cluster::Connection to be deleted via the Cluster's local map before it was fully initialized. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@959752 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/cluster/Connection.cpp | 1 - cpp/src/qpid/cluster/ConnectionCodec.cpp | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'cpp') diff --git a/cpp/src/qpid/cluster/Connection.cpp b/cpp/src/qpid/cluster/Connection.cpp index d4f0a06eaf..f6cccf06a2 100644 --- a/cpp/src/qpid/cluster/Connection.cpp +++ b/cpp/src/qpid/cluster/Connection.cpp @@ -95,7 +95,6 @@ Connection::Connection(Cluster& c, sys::ConnectionOutputHandler& out, updateIn(c.getUpdateReceiver()), secureConnection(0) { - cluster.addLocalConnection(this); if (isLocalClient()) { giveReadCredit(cluster.getSettings().readMax); // Flow control // Delay adding the connection to the management map until announce() diff --git a/cpp/src/qpid/cluster/ConnectionCodec.cpp b/cpp/src/qpid/cluster/ConnectionCodec.cpp index 931cda4893..91ec10903c 100644 --- a/cpp/src/qpid/cluster/ConnectionCodec.cpp +++ b/cpp/src/qpid/cluster/ConnectionCodec.cpp @@ -58,6 +58,7 @@ ConnectionCodec::ConnectionCodec( ) : codec(out, logId, isLink), interceptor(new Connection(cluster, codec, logId, cluster.getId(), catchUp, isLink, external)) { + cluster.addLocalConnection(interceptor); std::auto_ptr ih(new ProxyInputHandler(interceptor)); codec.setInputHandler(ih); codec.setVersion(v); -- cgit v1.2.1