summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-06-03 05:59:59 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-06-03 05:59:59 +0000
commitf43f6c386431dfc2e7668916b4582a98c18ca6c3 (patch)
tree0bb7a1920b3e6203e37441e03ef4e971869ee5c9
parent6d87e0eb72511b25693789fea6ce2658fd5fad7d (diff)
Keep track of what IRCds set -r on nick change and dont inform us to keep the modemanager/modestacker in sync
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2996 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--src/protocol/ratbox.c2
-rw-r--r--src/protocol/unreal32.c2
-rw-r--r--src/users.c18
3 files changed, 8 insertions, 14 deletions
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index 3c589e98e..6832baa10 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -41,7 +41,7 @@ IRCDVar myIrcd[] = {
0, /* O:LINE */
0, /* VHOST ON NICK */
0, /* Change RealName */
- 0, /* On nick change check if they could be identified */
+ 1, /* On nick change check if they could be identified */
0, /* No Knock requires +i */
0, /* We support TOKENS */
0, /* TIME STAMPS are BASE64 */
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index f26eec067..5da7c8b86 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -43,7 +43,7 @@ IRCDVar myIrcd[] = {
1, /* UMODE */
1, /* VHOST ON NICK */
1, /* Change RealName */
- 0, /* On nick change check if they could be identified */
+ 1, /* On nick change check if they could be identified */
1, /* No Knock requires +i */
1, /* We support Unreal TOKENS */
1, /* TIME STAMPS are BASE64 */
diff --git a/src/users.c b/src/users.c
index fd815f5c6..57e392bc4 100644
--- a/src/users.c
+++ b/src/users.c
@@ -980,9 +980,12 @@ User *do_nick(const char *source, const char *nick, const char *username, const
/* On nick change -r gets set on nick changes but we aren't informed about it, causing SetMode(UMODE_REGISTERED)
* to fail (we think it is already set). Remove it silently like the IRCds
*/
- UserMode *um = ModeManager::FindUserModeByName(UMODE_REGISTERED);
- if (um)
- user->RemoveModeInternal(um);
+ if (ircd->check_nick_id)
+ {
+ UserMode *um = ModeManager::FindUserModeByName(UMODE_REGISTERED);
+ if (um)
+ user->RemoveModeInternal(um);
+ }
std::string oldnick = user->nick;
user->SetNewNick(nick);
@@ -1008,15 +1011,6 @@ User *do_nick(const char *source, const char *nick, const char *username, const
Alog() << Config.s_NickServ << ": " << user->GetMask() << " automatically identified for group " << user->Account()->display;
}
- /* Bahamut sets -r on every nick change */
- if (ircd->check_nick_id)
- {
- if (na && na->nc == user->Account())
- {
- user->SetMode(findbot(Config.s_NickServ), UMODE_REGISTERED);
- }
- }
-
if (ircd->sqline)
{
if (!is_oper(user) && check_sqline(user->nick.c_str(), 1))