summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-08-25 23:26:45 -0400
committerAdam <Adam@anope.org>2013-08-25 23:26:45 -0400
commit6b79349e6c7ea2174c90c2567dde2038ebd59276 (patch)
tree4685efb23c9ddbcd8d43621567346a3490998a8f /modules
parent678f54903d3c18d6478f6be9e29a45eec62ef421 (diff)
Fix User::IsIdentified with check_nick, do not remove +r on bursting clients until after server sync
Diffstat (limited to 'modules')
-rw-r--r--modules/pseudoclients/nickserv.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp
index 6700dce48..c57039bee 100644
--- a/modules/pseudoclients/nickserv.cpp
+++ b/modules/pseudoclients/nickserv.cpp
@@ -378,8 +378,14 @@ class NickServCore : public Module, public NickServService
for (user_map::const_iterator it = UserListByNick.begin(); it != UserListByNick.end(); ++it)
{
User *u = it->second;
- if (u->server == s && !u->IsIdentified())
- this->Validate(u);
+
+ if (u->server == s)
+ {
+ if (u->HasMode("REGISTERED") && !u->IsIdentified(true))
+ u->RemoveMode(NickServ, "REGISTERED");
+ if (!u->IsIdentified())
+ this->Validate(u);
+ }
}
}
@@ -409,7 +415,7 @@ class NickServCore : public Module, public NickServService
void OnUserModeSet(const MessageSource &setter, User *u, const Anope::string &mname) anope_override
{
- if (mname == "REGISTERED" && !u->IsIdentified())
+ if (u->server->IsSynced() && mname == "REGISTERED" && !u->IsIdentified(true))
u->RemoveMode(NickServ, mname);
}