diff options
| author | 2022-02-01 16:00:54 +0000 | |
|---|---|---|
| committer | 2022-02-01 16:00:54 +0000 | |
| commit | 95868f7458e03f76dc6babfcefa993a63fb31b56 (patch) | |
| tree | e57400d2509f8016a6591e1ea5185eb5beb6cbf7 | |
| parent | The target in OnDecodeMetaData can be nullptr sometimes. (diff) | |
| parent | Fix splitting servers multiple times in some cases. (diff) | |
Merge branch 'insp3' into master.
| -rw-r--r-- | make/template/apparmor | 4 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/treeserver.cpp | 4 | ||||
| -rw-r--r-- | src/modules/m_spanningtree/treesocket2.cpp | 6 |
3 files changed, 11 insertions, 3 deletions
diff --git a/make/template/apparmor b/make/template/apparmor index 15ecacd54..9bdf6915d 100644 --- a/make/template/apparmor +++ b/make/template/apparmor @@ -44,4 +44,8 @@ # Required by the mysql module: #include <abstractions/mysql> + + # Required by the ssl_gnutls, ssl_mbedtls, and ssl_openssl modules: + #include <abstractions/ssl_certs> + #include <abstractions/ssl_keys> } diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp index dfe7edb3d..e56eb4d67 100644 --- a/src/modules/m_spanningtree/treeserver.cpp +++ b/src/modules/m_spanningtree/treeserver.cpp @@ -200,6 +200,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 (const auto& server : Children) diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp index de634e231..2075da429 100644 --- a/src/modules/m_spanningtree/treesocket2.cpp +++ b/src/modules/m_spanningtree/treesocket2.cpp @@ -410,10 +410,10 @@ 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); - - 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) |
