diff --git a/modules/sasl.cpp b/modules/sasl.cpp index a72824d8..da5872fb 100644 --- a/modules/sasl.cpp +++ b/modules/sasl.cpp @@ -189,9 +189,7 @@ class CSASLMod : public CModule { void CheckRequireAuth() { if (!m_bAuthenticated && GetNV(NV_REQUIRE_AUTH).ToBool()) { - GetNetwork()->SetIRCConnectEnabled(false); - PutModule(t_s("Disabling network, we require authentication.")); - PutModule(t_s("Use 'RequireAuth no' to disable.")); + GetNetwork()->GetIRCSock()->Quit("SASL not available"); } } diff --git a/test/integration/tests/modules.cpp b/test/integration/tests/modules.cpp index 32ac3d82..e645387a 100644 --- a/test/integration/tests/modules.cpp +++ b/test/integration/tests/modules.cpp @@ -330,5 +330,21 @@ TEST_F(ZNCTest, SaslMechsNotInit) { ircd.ReadUntil("PONG foo"); } +TEST_F(ZNCTest, SaslRequire) { + auto znc = Run(); + auto ircd = ConnectIRCd(); + auto client = LoginClient(); + client.Write("znc loadmod sasl"); + client.Write("PRIVMSG *sasl :set * *"); + client.Write("PRIVMSG *sasl :requireauth yes"); + client.ReadUntil("Password has been set"); + client.Write("znc jump"); + ircd = ConnectIRCd(); + ircd.ReadUntil("CAP LS"); + ircd.Write(":server 001 nick :Hello"); + ircd.ReadUntil("QUIT :SASL not available"); + auto ircd2 = ConnectIRCd(); +} + } // namespace } // namespace znc_inttest