summaryrefslogtreecommitdiff
path: root/src/cmd_nick.cpp
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-02-19 08:38:26 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-02-19 08:38:26 +0000
commitddb970dd670bcd905c8f34458f8fcf70e9fd89bd (patch)
treedbd6e3fb9300eb04ff9feed8344d4e6891172141 /src/cmd_nick.cpp
parentbe4c8f3f21f6b5c1a56a60d5843a62d5a3321039 (diff)
1) Fix for nickname overruled with new cullList stuff -- we have to change their nick, its not safe to quit them as it messes up the nick hash.
2) Add a mute flag for users, so we can drop commands from users who have been placed on the cullList. This is independent of the actual cullList and can be used as a general mute flag e.g. by shun modules. 3) Fix /kill to also not quit the user immediately, remove need for CMD_USER_DELETED return anywhere in the code. *** THIS NEEDS TESTING BY QA *** git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6596 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/cmd_nick.cpp')
-rw-r--r--src/cmd_nick.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/cmd_nick.cpp b/src/cmd_nick.cpp
index ae02a2e6d..03bad2579 100644
--- a/src/cmd_nick.cpp
+++ b/src/cmd_nick.cpp
@@ -69,17 +69,17 @@ CmdResult cmd_nick::Handle (const char** parameters, int pcnt, userrec *user)
if ((ServerInstance->FindNick(parameters[0])) && (ServerInstance->FindNick(parameters[0]) != user) && (ServerInstance->IsNick(parameters[0])))
{
userrec* InUse = ServerInstance->FindNick(parameters[0]);
- /* XXX FIXME: This no longer works with the global culllist stuff,
- * because the user is pushed onto the cullList then we accept a new user
- * with the SAME nickname, so this mucks up the nickname hash completely.
- * We need to find a way to force a nickchange upon the user whos being
- * overruled, rather than quitting them. -- Brain
- *
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->fd) + "-overruled";
+ InUse->UpdateNickHash(changeback.c_str());
+ strlcpy(InUse->nick, changeback.c_str(), NICKMAX - 1);
+ InUse->InvalidateCache();
}
- else*/
+ else
{
user->WriteServ("433 %s %s :Nickname is already in use.", user->registered >= REG_NICK ? user->nick : "*", parameters[0]);
return CMD_FAILURE;