diff options
-rw-r--r-- | modules/protocol/bahamut.cpp | 1 | ||||
-rw-r--r-- | modules/protocol/unreal.cpp | 8 | ||||
-rw-r--r-- | modules/pseudoclients/nickserv.cpp | 3 |
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); |