diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_sasl.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/modules/m_sasl.cpp b/src/modules/m_sasl.cpp index fda574fb2..0bbe76838 100644 --- a/src/modules/m_sasl.cpp +++ b/src/modules/m_sasl.cpp @@ -30,17 +30,21 @@ class CommandAuthenticate : public Command { if (user->registered != REG_ALL) { - /* Only allow AUTHENTICATE on unregistered clients */ - std::deque<std::string> params; - params.push_back("*"); - params.push_back("AUTHENTICATE"); - params.push_back(user->uuid); + /* Only act if theyve enabled CAP REQ sasl */ + if (user->GetExt("sasl")) + { + /* Only allow AUTHENTICATE on unregistered clients */ + std::deque<std::string> params; + params.push_back("*"); + params.push_back("AUTHENTICATE"); + params.push_back(user->uuid); - for (int i = 0; i < pcnt; ++i) - params.push_back(parameters[i]); + for (int i = 0; i < pcnt; ++i) + params.push_back(parameters[i]); - Event e((char*)¶ms, Creator, "send_encap"); - e.Send(ServerInstance); + Event e((char*)¶ms, Creator, "send_encap"); + e.Send(ServerInstance); + } } return CMD_FAILURE; } |