summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/protocol.h3
-rw-r--r--modules/protocol/inspircd.cpp1
-rw-r--r--modules/protocol/plexus.cpp10
-rw-r--r--modules/protocol/solanum.cpp1
-rw-r--r--modules/protocol/unrealircd.cpp1
-rw-r--r--modules/sasl.cpp8
6 files changed, 9 insertions, 15 deletions
diff --git a/include/protocol.h b/include/protocol.h
index 92b53ef91..97eb772b5 100644
--- a/include/protocol.h
+++ b/include/protocol.h
@@ -101,9 +101,6 @@ public:
/* See ns_cert */
bool CanCertFP = false;
- /* Can users log out before being fully connected? */
- bool CanSVSLogout = false;
-
/* Whether this IRCd requires unique IDs for each user or server. See TS6/P10. */
bool RequiresID = false;
diff --git a/modules/protocol/inspircd.cpp b/modules/protocol/inspircd.cpp
index 3fc3739f3..1fbc39b6a 100644
--- a/modules/protocol/inspircd.cpp
+++ b/modules/protocol/inspircd.cpp
@@ -145,7 +145,6 @@ public:
CanSetVIdent = true;
CanSQLine = true;
CanSZLine = true;
- CanSVSLogout = true;
CanCertFP = true;
RequiresID = true;
MaxModes = 0;
diff --git a/modules/protocol/plexus.cpp b/modules/protocol/plexus.cpp
index e49399602..2840f9c88 100644
--- a/modules/protocol/plexus.cpp
+++ b/modules/protocol/plexus.cpp
@@ -187,7 +187,15 @@ public:
void SendSVSLogin(const Anope::string &uid, NickAlias *na) override
{
Server *s = Server::Find(uid.substr(0, 3));
- Uplink::Send("ENCAP", s ? s->GetName() : uid.substr(0, 3), "SVSLOGIN", uid, '*', '*', na->GetVHostHost().empty() ? "*" : na->GetVHostHost(), na->nc->display);
+ Anope::string target = s ? s->GetName() : uid.substr(0, 3);
+ if (na)
+ {
+ Uplink::Send("ENCAP", target, "SVSLOGIN", uid, '*', '*', na->GetVHostHost().empty() ? "*" : na->GetVHostHost(), na->nc->display);
+ }
+ else
+ {
+ Uplink::Send("ENCAP", target, "SU", uid, "");
+ }
}
void SendSVSNOOP(const Server *server, bool set) override
diff --git a/modules/protocol/solanum.cpp b/modules/protocol/solanum.cpp
index 3b2e22f85..fccf85230 100644
--- a/modules/protocol/solanum.cpp
+++ b/modules/protocol/solanum.cpp
@@ -45,7 +45,6 @@ public:
CanSZLine = true;
CanSVSNick = true;
CanSVSHold = true;
- CanSVSLogout = true;
CanSetVHost = true;
RequiresID = true;
MaxModes = 4;
diff --git a/modules/protocol/unrealircd.cpp b/modules/protocol/unrealircd.cpp
index 8f6cbe455..7cc569d38 100644
--- a/modules/protocol/unrealircd.cpp
+++ b/modules/protocol/unrealircd.cpp
@@ -37,7 +37,6 @@ public:
CanSZLine = true;
CanSVSHold = true;
CanClearBans = true;
- CanSVSLogout = true;
CanCertFP = true;
RequiresID = true;
MaxModes = 12;
diff --git a/modules/sasl.cpp b/modules/sasl.cpp
index 815291166..91957d513 100644
--- a/modules/sasl.cpp
+++ b/modules/sasl.cpp
@@ -145,14 +145,6 @@ public:
void ProcessMessage(Session *sess, const SASL::Message &m) override
{
- if (!IRCD->CanSVSLogout && !User::Find(sess->uid))
- {
- // This IRCd can't log users out yet.
- sasl->Fail(sess);
- delete sess;
- return;
- }
-
if (m.type == "S")
{
sasl->SendMessage(sess, "C", "+");