FOREACH_RESULT(I_OnUserPreNick,OnUserPreNick(user,parameters[0]));
if (MOD_RESULT)
return CMD_FAILURE;
- user->InvalidateCache();
if (user->registered == REG_ALL)
user->WriteCommon("NICK %s",parameters[0]);
strlcpy(user->nick, parameters[0], NICKMAX - 1);
+ user->InvalidateCache();
FOREACH_MOD(I_OnUserPostNick,OnUserPostNick(user,oldnick));
return CMD_SUCCESS;
}
userrec* InUse = ServerInstance->FindNick(parameters[0]);
if (InUse->registered != REG_ALL)
{
- userrec::QuitUser(ServerInstance, InUse, "Nickname overruled");
+ /* change the nick of the older user to nnn-overruled,
+ * where nnn is their file descriptor. We know this to be unique.
+ */
+ std::string changeback = ConvToStr(InUse->GetFd()) + "-overruled";
+ InUse->UpdateNickHash(changeback.c_str());
+ strlcpy(InUse->nick, changeback.c_str(), NICKMAX - 1);
+ InUse->InvalidateCache();
}
else
{
}
user->WriteCommon("NICK %s",parameters[0]);
-
+
}
strlcpy(oldnick, user->nick, NICKMAX - 1);