X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_sasl.cpp;h=074362651925cc1b5fb8737ec3086bb68b3196dc;hb=0ada3aeb10294f9252c6b1d69b7d761c969ef12c;hp=1d67f0c025040bd428a39244759c4b5e5e9c2a44;hpb=6c7a3ceb6c674a9af09da955ee0238e9291cf29a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_sasl.cpp b/src/modules/m_sasl.cpp index 1d67f0c02..074362651 100644 --- a/src/modules/m_sasl.cpp +++ b/src/modules/m_sasl.cpp @@ -31,7 +31,7 @@ static std::string sasl_target = "*"; static void SendSASL(const parameterlist& params) { - if (!ServerInstance->PI->SendEncapsulatedData(params)) + if (!ServerInstance->PI->SendEncapsulatedData(sasl_target, "SASL", params)) { SASLFallback(NULL, params); } @@ -54,8 +54,6 @@ class SaslAuthenticator : user(user_), state(SASL_INIT), state_announced(false) { parameterlist params; - params.push_back(sasl_target); - params.push_back("SASL"); params.push_back(user->uuid); params.push_back("*"); params.push_back("S"); @@ -91,20 +89,23 @@ class SaslAuthenticator { case SASL_INIT: this->agent = msg[0]; - this->user->Write("AUTHENTICATE %s", msg[3].c_str()); this->state = SASL_COMM; - break; + /* fall through */ case SASL_COMM: if (msg[0] != this->agent) return this->state; - if (msg[2] != "D") + if (msg[2] == "C") this->user->Write("AUTHENTICATE %s", msg[3].c_str()); - else + else if (msg[2] == "D") { this->state = SASL_DONE; this->result = this->GetSaslResult(msg[3]); } + else if (msg[2] == "M") + this->user->WriteNumeric(908, "%s %s :are available SASL mechanisms", this->user->nick.c_str(), msg[3].c_str()); + else + ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "Services sent an unknown SASL message \"%s\" \"%s\"", msg[2].c_str(), msg[3].c_str()); break; case SASL_DONE: @@ -129,8 +130,6 @@ class SaslAuthenticator return true; parameterlist params; - params.push_back(sasl_target); - params.push_back("SASL"); params.push_back(this->user->uuid); params.push_back(this->agent); params.push_back("C");