summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/protocol/inspircd20.cpp7
-rw-r--r--modules/protocol/unreal.cpp7
2 files changed, 12 insertions, 2 deletions
diff --git a/modules/protocol/inspircd20.cpp b/modules/protocol/inspircd20.cpp
index 32e1a76c1..c30923548 100644
--- a/modules/protocol/inspircd20.cpp
+++ b/modules/protocol/inspircd20.cpp
@@ -568,7 +568,12 @@ struct IRCDMessageEncap : IRCDMessage
base64(account\0account\0pass)
*/
if (params[4] == "S")
- UplinkSocket::Message(Me) << "ENCAP " << params[2].substr(0, 3) << " SASL " << Me->GetSID() << " " << params[2] << " C +";
+ {
+ if (params[5] == "PLAIN")
+ UplinkSocket::Message(Me) << "ENCAP " << params[2].substr(0, 3) << " SASL " << Me->GetSID() << " " << params[2] << " C +";
+ else
+ UplinkSocket::Message(Me) << "ENCAP " << params[2].substr(0, 3) << " SASL " << Me->GetSID() << " " << params[2] << " C F";
+ }
else if (params[4] == "C")
{
Anope::string decoded;
diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp
index 2f5e75747..8449b7a19 100644
--- a/modules/protocol/unreal.cpp
+++ b/modules/protocol/unreal.cpp
@@ -893,7 +893,12 @@ struct IRCDMessageSASL : IRCDMessage
return;
if (params[2] == "S")
- UplinkSocket::Message() << "SASL " << params[1].substr(0, p) << " " << params[1] << " C +";
+ {
+ if (params[3] == "PLAIN")
+ UplinkSocket::Message() << "SASL " << params[1].substr(0, p) << " " << params[1] << " C +";
+ else
+ UplinkSocket::Message() << "SASL " << params[1].substr(0, p) << " " << params[1] << " C F";
+ }
else if (params[2] == "C")
{
Anope::string decoded;