summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-07-13 22:57:45 +0000
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>2008-07-13 22:57:45 +0000
commit0797f1312163ccc5174e52042d87af21dc042124 (patch)
treeb5578b969aeef7c4e156bea45c40f078c4ad7455
parent7009fbf66e908c97e6204333c4ba8bd6bcc9a7a1 (diff)
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
-rw-r--r--include/numerics.h5
-rw-r--r--src/commands/cmd_join.cpp2
-rw-r--r--src/commands/cmd_pass.cpp2
-rw-r--r--src/commands/cmd_rehash.cpp7
-rw-r--r--src/commands/cmd_server.cpp3
-rw-r--r--src/commands/cmd_time.cpp2
-rw-r--r--src/commands/cmd_version.cpp2
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<std::string>& 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<std::string>& 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<std::string>& 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<std::string>& 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<std::string>&, 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<std::string>&, 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<std::string>&, 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;
}