summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/protocol/bahamut.cpp1
-rw-r--r--modules/protocol/unreal.cpp8
-rw-r--r--modules/pseudoclients/nickserv.cpp3
3 files changed, 9 insertions, 3 deletions
diff --git a/modules/protocol/bahamut.cpp b/modules/protocol/bahamut.cpp
index 8aeee39c8..5ac50bf32 100644
--- a/modules/protocol/bahamut.cpp
+++ b/modules/protocol/bahamut.cpp
@@ -640,6 +640,7 @@ class ProtoBahamut : public Module
void OnUserNickChange(User *u, const Anope::string &) anope_override
{
u->RemoveModeInternal(ModeManager::FindUserModeByName(UMODE_REGISTERED));
+ ircdproto->SendLogout(u);
}
};
diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp
index de452e196..3bdcd2e5f 100644
--- a/modules/protocol/unreal.cpp
+++ b/modules/protocol/unreal.cpp
@@ -361,8 +361,11 @@ class UnrealIRCdProto : public IRCDProto
void SendLogout(User *u) anope_override
{
- const BotInfo *ns = findbot(Config->NickServ);
- ircdproto->SendMode(ns, u, "+d 1");
+ if (!Capab.count("ESVID"))
+ {
+ const BotInfo *ns = findbot(Config->NickServ);
+ ircdproto->SendMode(ns, u, "+d 1");
+ }
}
void SendChannel(Channel *c) anope_override
@@ -1187,6 +1190,7 @@ class ProtoUnreal : public Module
void OnUserNickChange(User *u, const Anope::string &) anope_override
{
u->RemoveModeInternal(ModeManager::FindUserModeByName(UMODE_REGISTERED));
+ ircdproto->SendLogout(u);
}
void OnChannelCreate(Channel *c) anope_override
diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp
index 86b525950..cda719a33 100644
--- a/modules/pseudoclients/nickserv.cpp
+++ b/modules/pseudoclients/nickserv.cpp
@@ -297,13 +297,14 @@ class NickServCore : public Module
/* If the new nick isnt registerd or its registerd and not yours */
if (!na || na->nc != u->Account())
{
- ircdproto->SendLogout(u);
+ /* Remove +r, but keep an account associated with the user */
u->RemoveMode(NickServ, UMODE_REGISTERED);
this->mynickserv.Validate(u);
}
else
{
+ /* Reset +r and re-send account (even though it really should be set at this point) */
ircdproto->SendLogin(u);
if (!Config->NoNicknameOwnership && na->nc == u->Account() && na->nc->HasFlag(NI_UNCONFIRMED) == false)
u->SetMode(NickServ, UMODE_REGISTERED);