+ /* command is disabled! */
+ if (ServerInstance->Config->DisabledDontExist)
+ {
+ user->WriteNumeric(ERR_UNKNOWNCOMMAND, "%s %s :Unknown command",user->nick.c_str(),command.c_str());
+ }
+ else
+ {
+ user->WriteNumeric(ERR_UNKNOWNCOMMAND, "%s %s :This command has been disabled.",
+ user->nick.c_str(), command.c_str());
+ }
+
+ ServerInstance->SNO->WriteToSnoMask('d', "%s denied for %s (%s@%s)",
+ command.c_str(), user->nick.c_str(), user->ident.c_str(), user->host.c_str());
+ return do_more;
+ }
+ if (command_p.size() < cm->second->min_params)
+ {
+ user->WriteNumeric(ERR_NEEDMOREPARAMS, "%s %s :Not enough parameters.", user->nick.c_str(), command.c_str());
+ if ((ServerInstance->Config->SyntaxHints) && (user->registered == REG_ALL) && (cm->second->syntax.length()))
+ user->WriteNumeric(RPL_SYNTAX, "%s :SYNTAX %s %s", user->nick.c_str(), cm->second->command.c_str(), cm->second->syntax.c_str());
+ return do_more;
+ }
+ if ((user->registered != REG_ALL) && (!cm->second->WorksBeforeReg()))
+ {
+ user->WriteNumeric(ERR_NOTREGISTERED, "%s :You have not registered",command.c_str());
+ return do_more;
+ }
+ else
+ {
+ /* passed all checks.. first, do the (ugly) stats counters. */
+ cm->second->use_count++;
+ cm->second->total_bytes += cmd.length();
+
+ /* module calls too */
+ MOD_RESULT = 0;
+ FOREACH_RESULT(I_OnPreCommand,OnPreCommand(command, command_p, user, true, cmd));
+ if (MOD_RESULT == 1)
+ return do_more;
+
+ /*
+ * WARNING: be careful, the user may be deleted soon
+ */
+ CmdResult result = cm->second->Handle(command_p, user);
+
+ FOREACH_MOD(I_OnPostCommand,OnPostCommand(command, command_p, user, result,cmd));
+ return do_more;