* ---------------------------------------------------
*/
+#include "inspircd.h"
#include "configreader.h"
#include "users.h"
#include "modules.h"
-#include "inspircd.h"
#include "xline.h"
#include "commands/cmd_nick.h"
-extern "C" command_t* init_command(InspIRCd* Instance)
+extern "C" DllExport command_t* init_command(InspIRCd* Instance)
{
return new cmd_nick(Instance);
}
char oldnick[NICKMAX];
if (!*parameters[0] || !*user->nick)
+ {
+ /* We cant put blanks in the parameters, so for this (extremely rare) issue we just put '*' here. */
+ user->WriteServ("432 %s * :Erroneous Nickname", *user->nick ? user->nick : "*");
return CMD_FAILURE;
+ }
if (irc::string(user->nick) == irc::string(parameters[0]))
{
user->InvalidateCache();
+ /* Update display nicks */
+ for (UCListIter v = user->chans.begin(); v != user->chans.end(); v++)
+ {
+ CUList* ulist = v->first->GetUsers();
+ CUList::iterator i = ulist->find(user);
+ if (i != ulist->end())
+ i->second = user->nick;
+ }
+
if (user->registered < REG_NICKUSER)
{
user->registered = (user->registered | REG_NICK);