From 3ff3810ca19f7f4a20ad3a6dc2707c2bdb2fec5d Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 1 Feb 2022 11:06:21 +0000 Subject: Fix duplicate messages when a server connection errors. --- src/modules/m_spanningtree/treesocket2.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp index 60bd3ec8a..e46e9a84d 100644 --- a/src/modules/m_spanningtree/treesocket2.cpp +++ b/src/modules/m_spanningtree/treesocket2.cpp @@ -419,8 +419,8 @@ void TreeSocket::Close() // then propagate a netsplit to all peers. if (MyRoot) MyRoot->SQuit(getError(), true); - - ServerInstance->SNO->WriteGlobalSno('l', "Connection to '\002%s\002' failed.", linkID.c_str()); + else + ServerInstance->SNO->WriteGlobalSno('l', "Connection to '\002%s\002' failed.", linkID.c_str()); time_t server_uptime = ServerInstance->Time() - this->age; if (server_uptime) -- cgit v1.3.1-10-gc9f91 From 170a26e72bc06c79314dbd88b87ace95d6213945 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 1 Feb 2022 11:26:31 +0000 Subject: Fix splitting servers multiple times in some cases. --- src/modules/m_spanningtree/treeserver.cpp | 4 ++++ src/modules/m_spanningtree/treesocket2.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp index 6920fc97b..d0afe6c5d 100644 --- a/src/modules/m_spanningtree/treeserver.cpp +++ b/src/modules/m_spanningtree/treeserver.cpp @@ -211,6 +211,10 @@ void TreeServer::SQuitChild(TreeServer* server, const std::string& reason, bool void TreeServer::SQuitInternal(unsigned int& num_lost_servers, bool error) { + // Don't squit a server which is already dead. + if (isdead) + return; + ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "Server %s lost in split", GetName().c_str()); for (ChildServers::const_iterator i = Children.begin(); i != Children.end(); ++i) diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp index e46e9a84d..809418768 100644 --- a/src/modules/m_spanningtree/treesocket2.cpp +++ b/src/modules/m_spanningtree/treesocket2.cpp @@ -417,7 +417,7 @@ void TreeSocket::Close() // Connection closed. // If the connection is fully up (state CONNECTED) // then propagate a netsplit to all peers. - if (MyRoot) + if (MyRoot && !MyRoot->IsDead()) MyRoot->SQuit(getError(), true); else ServerInstance->SNO->WriteGlobalSno('l', "Connection to '\002%s\002' failed.", linkID.c_str()); -- cgit v1.3.1-10-gc9f91