diff --git a/Dockerfile b/Dockerfile index 57902582..1f896b41 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM alpine:3.10 +FROM alpine:3.11 ARG VERSION_EXTRA="" diff --git a/src/Client.cpp b/src/Client.cpp index 6d8f4518..13048775 100644 --- a/src/Client.cpp +++ b/src/Client.cpp @@ -862,6 +862,9 @@ void CClient::ClearServerDependentCaps() { template void CClient::AddBuffer(const T& Message) { + if (!m_pNetwork) { + return; + } const CString sTarget = Message.GetTarget(); T Format; @@ -889,7 +892,7 @@ void CClient::EchoMessage(const CMessage& Message) { CMessage EchoedMessage = Message; for (CClient* pClient : GetClients()) { if (pClient->HasEchoMessage() || - (pClient != this && (m_pNetwork->IsChan(Message.GetParam(0)) || + (pClient != this && ((m_pNetwork && m_pNetwork->IsChan(Message.GetParam(0))) || pClient->HasSelfMessage()))) { EchoedMessage.SetNick(GetNickMask()); pClient->PutClient(EchoedMessage); @@ -898,6 +901,9 @@ void CClient::EchoMessage(const CMessage& Message) { } set CClient::MatchChans(const CString& sPatterns) const { + if (!m_pNetwork) { + return {}; + } VCString vsPatterns; sPatterns.Replace_n(",", " ") .Split(" ", vsPatterns, false, "", "", true, true); diff --git a/test/integration/tests/core.cpp b/test/integration/tests/core.cpp index 863754fe..f50a32c7 100644 --- a/test/integration/tests/core.cpp +++ b/test/integration/tests/core.cpp @@ -297,6 +297,14 @@ TEST_F(ZNCTest, StatusEchoMessage) { client.Write("PRIVMSG *status :blah"); client.ReadUntil(":nick!user@irc.znc.in PRIVMSG *status :blah"); client.ReadUntil(":*status!znc@znc.in PRIVMSG nick :Unknown command"); + client.Write("znc delnetwork test"); + client.ReadUntil("Network deleted"); + auto client2 = LoginClient(); + client2.Write("PRIVMSG *status :blah2"); + client2.ReadUntil(":*status!znc@znc.in PRIVMSG nick :Unknown command"); + auto client3 = LoginClient(); + client3.Write("PRIVMSG *status :blah3"); + client3.ReadUntil(":*status!znc@znc.in PRIVMSG nick :Unknown command"); } } // namespace