From 0797f1312163ccc5174e52042d87af21dc042124 Mon Sep 17 00:00:00 2001 From: w00t Date: Sun, 13 Jul 2008 22:57:45 +0000 Subject: Convert more stuff to use numerics.h, change SERVER to send ERR_ALREADYREGISTERED instead of picking a random numeric. Also no longer send a notice to opers, as 1) this could flood and 2) stupid things like cgiirc will trigger this a lot. Additionally, add a note to REHASH about finding a way to kill rehash thread if needed. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10013 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/numerics.h | 5 +++++ src/commands/cmd_join.cpp | 2 +- src/commands/cmd_pass.cpp | 2 +- src/commands/cmd_rehash.cpp | 7 +++++-- src/commands/cmd_server.cpp | 3 +-- src/commands/cmd_time.cpp | 2 +- src/commands/cmd_version.cpp | 2 +- 7 files changed, 15 insertions(+), 8 deletions(-) diff --git a/include/numerics.h b/include/numerics.h index 90a739d2f..53620661e 100644 --- a/include/numerics.h +++ b/include/numerics.h @@ -45,6 +45,7 @@ enum Numerics RPL_CHANNELCREATED = 329, // ??? RPL_TOPIC = 332, RPL_TOPICTIME = 333, // not RFC, extremely common though + RPL_VERSION = 351, RPL_NAMREPLY = 353, RPL_ENDOFNAMES = 366, @@ -52,12 +53,15 @@ enum Numerics RPL_MOTDSTART = 375, RPL_ENDOFMOTD = 376, + RPL_REHASHING = 382, + RPL_TIME = 391, RPL_YOURDISPLAYEDHOST = 396, // from charybdis/etc, common convention /* * Error range of numerics. */ ERR_NOSUCHNICK = 401, + ERR_NOSUCHCHANNEL = 403, // used to indicate an invalid channel name also, so don't rely on RFC text (don't do that anyway!) ERR_TOOMANYCHANNELS = 405, ERR_UNKNOWNCOMMAND = 421, ERR_NOMOTD = 422, @@ -65,6 +69,7 @@ enum Numerics ERR_USERNOTINCHANNEL = 441, ERR_NOTREGISTERED = 451, ERR_NEEDMOREPARAMS = 461, + ERR_ALREADYREGISTERED = 462, /* * A quick side-rant about the next group of numerics.. diff --git a/src/commands/cmd_join.cpp b/src/commands/cmd_join.cpp index c19e7c015..0abfb73b1 100644 --- a/src/commands/cmd_join.cpp +++ b/src/commands/cmd_join.cpp @@ -46,6 +46,6 @@ CmdResult CommandJoin::Handle (const std::vector& parameters, User } } - user->WriteNumeric(403, "%s %s :Invalid channel name",user->nick.c_str(), parameters[0].c_str()); + user->WriteNumeric(ERR_NOSUCHCHANNEL, "%s %s :Invalid channel name",user->nick.c_str(), parameters[0].c_str()); return CMD_FAILURE; } diff --git a/src/commands/cmd_pass.cpp b/src/commands/cmd_pass.cpp index b9b55d007..300479df3 100644 --- a/src/commands/cmd_pass.cpp +++ b/src/commands/cmd_pass.cpp @@ -24,7 +24,7 @@ CmdResult CommandPass::Handle (const std::vector& parameters, User // Check to make sure they havnt registered -- Fix by FCS if (user->registered == REG_ALL) { - user->WriteNumeric(462, "%s :You may not reregister",user->nick.c_str()); + user->WriteNumeric(ERR_ALREADYREGISTERED, "%s :You may not reregister",user->nick.c_str()); return CMD_FAILURE; } ConnectClass* a = user->GetClass(); diff --git a/src/commands/cmd_rehash.cpp b/src/commands/cmd_rehash.cpp index 6a7ed124b..985d3c530 100644 --- a/src/commands/cmd_rehash.cpp +++ b/src/commands/cmd_rehash.cpp @@ -44,7 +44,7 @@ CmdResult CommandRehash::Handle (const std::vector& parameters, Use FOREACH_MOD(I_OnRehash,OnRehash(user, "")); // XXX write this to a remote user correctly - user->WriteNumeric(382, "%s %s :Rehashing",user->nick.c_str(),ServerConfig::CleanFilename(ServerInstance->ConfigFileName)); + user->WriteNumeric(RPL_REHASHING, "%s %s :Rehashing",user->nick.c_str(),ServerConfig::CleanFilename(ServerInstance->ConfigFileName)); std::string m = user->nick + " is rehashing config file " + ServerConfig::CleanFilename(ServerInstance->ConfigFileName) + " on " + ServerInstance->Config->ServerName; ServerInstance->SNO->WriteToSnoMask('A', m); @@ -69,7 +69,10 @@ CmdResult CommandRehash::Handle (const std::vector& parameters, Use } else { - /* A rehash is already in progress! ahh shit. */ + /* + * A rehash is already in progress! ahh shit. + * XXX, todo: we should find some way to kill runaway rehashes that are blocking, this is a major problem for unrealircd users + */ if (IS_LOCAL(user)) user->WriteServ("NOTICE %s :*** Could not rehash: A rehash is already in progress.", user->nick.c_str()); else diff --git a/src/commands/cmd_server.cpp b/src/commands/cmd_server.cpp index c7b413406..81f9e722c 100644 --- a/src/commands/cmd_server.cpp +++ b/src/commands/cmd_server.cpp @@ -23,7 +23,6 @@ extern "C" DllExport Command* init_command(InspIRCd* Instance) CmdResult CommandServer::Handle (const std::vector&, User *user) { - user->WriteNumeric(666, "%s :You cannot identify as a server, you are a USER. IRC Operators informed.",user->nick.c_str()); - ServerInstance->SNO->WriteToSnoMask('A', "WARNING: %s attempted to issue a SERVER command and is registered as a user!", user->nick.c_str()); + user->WriteNumeric(ERR_ALREADYREGISTERED, "%s :You are already registered. (Perhaps your IRC client does not have a /SERVER command).",user->nick.c_str()); return CMD_FAILURE; } diff --git a/src/commands/cmd_time.cpp b/src/commands/cmd_time.cpp index 79b8e823d..f25ab793a 100644 --- a/src/commands/cmd_time.cpp +++ b/src/commands/cmd_time.cpp @@ -32,7 +32,7 @@ CmdResult CommandTime::Handle (const std::vector&, User *user) snprintf(tms,26,"%s",asctime(timeinfo)); tms[24] = 0; - user->WriteNumeric(391, "%s %s :%s",user->nick.c_str(),ServerInstance->Config->ServerName,tms); + user->WriteNumeric(RPL_TIME, "%s %s :%s",user->nick.c_str(),ServerInstance->Config->ServerName,tms); return CMD_SUCCESS; } diff --git a/src/commands/cmd_version.cpp b/src/commands/cmd_version.cpp index 091577aba..73bf18508 100644 --- a/src/commands/cmd_version.cpp +++ b/src/commands/cmd_version.cpp @@ -23,7 +23,7 @@ extern "C" DllExport Command* init_command(InspIRCd* Instance) CmdResult CommandVersion::Handle (const std::vector&, User *user) { - user->WriteNumeric(351, "%s :%s",user->nick.c_str(),ServerInstance->GetVersionString().c_str()); + user->WriteNumeric(RPL_VERSION, "%s :%s",user->nick.c_str(),ServerInstance->GetVersionString().c_str()); ServerInstance->Config->Send005(user); return CMD_SUCCESS; } -- cgit v1.2.3