summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/inspircd.conf.example12
-rw-r--r--include/configreader.h4
-rw-r--r--src/command_parse.cpp7
-rw-r--r--src/configreader.cpp1
4 files changed, 23 insertions, 1 deletions
diff --git a/docs/inspircd.conf.example b/docs/inspircd.conf.example
index 303ad0833..194c422d5 100644
--- a/docs/inspircd.conf.example
+++ b/docs/inspircd.conf.example
@@ -564,6 +564,16 @@
# temporarily copied before loading. If not defined, #
# defaults to /tmp. #
# #
+# nouserdns - If set to 'yes', 'true' or '1', no user dns #
+# lookups will be performed for connecting users. #
+# this can save a lot of resources on very busy irc #
+# servers. #
+# #
+# syntaxhints - If et to 'yes', 'true' or '1', when a user does #
+# not give enough parameters for a command, a syntax #
+# hint will be given (using the RPL_TEXT numeric) #
+# as well as the standard ERR_NEEDMOREPARAMS. #
+# #
<options prefixquit="Quit: "
loglevel="default"
@@ -581,6 +591,8 @@
hidewhois=""
flatlinks="no"
hideulines="no"
+ nouserdns="no"
+ syntaxhints="no"
allowhalfop="yes">
diff --git a/include/configreader.h b/include/configreader.h
index c6775bc29..e2ff1c2c9 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -348,6 +348,10 @@ class ServerConfig : public Extensible
*/
bool NoUserDns;
+ /** If set to true, provide syntax hints for unknown commands
+ */
+ bool SyntaxHints;
+
ServerConfig();
/** Clears the include stack in preperation for
diff --git a/src/command_parse.cpp b/src/command_parse.cpp
index a90b7e4e3..3f8e87989 100644
--- a/src/command_parse.cpp
+++ b/src/command_parse.cpp
@@ -252,7 +252,12 @@ void CommandParser::ProcessCommand(userrec *user, std::string &cmd)
{
/* If syntax is given, display this as the 461 reply */
if (cm->second->syntax.length())
- WriteServ(user->fd,"461 %s %s :Not enough parameters. Syntax: %s %s", user->nick, command.c_str(), cm->second->command.c_str(), cm->second->syntax.c_str());
+ {
+ WriteServ(user->fd,"461 %s %s :Not enough parameters.", user->nick, command.c_str())
+ /* Use RPL_TEXT for this */
+ if (Config->SyntaxHints)
+ WriteServ(user->fd,"304 %s :SYNTAX %s %s", user->nick, cm->second->command.c_str(), cm->second->syntax.c_str());
+ }
else
WriteServ(user->fd,"461 %s %s :Not enough parameters", user->nick, command.c_str());
return;
diff --git a/src/configreader.cpp b/src/configreader.cpp
index b5ea8a815..d776027e7 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -568,6 +568,7 @@ void ServerConfig::Read(bool bail, userrec* user)
{"options", "operspywhois", &this->OperSpyWhois, DT_BOOLEAN, NoValidation},
{"options", "tempdir", &this->TempDir, DT_CHARPTR, ValidateTempDir},
{"options", "nouserdns", &this->NoUserDns, DT_BOOLEAN, NoValidation},
+ {"options", "syntaxhints", &this->SyntaxHints, DT_BOOLEAN, NoValidation},
{"pid", "file", &this->PID, DT_CHARPTR, NoValidation},
{NULL}
};