diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-27 00:22:29 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-27 00:22:29 +0000 |
commit | 934d9a6a184b7a8600fcda30e012ba6f29f17b64 (patch) | |
tree | 44edb8dc4551777fcbdb73ef1a28e9b9d44bd9a6 /src/modules | |
parent | 7c1352df0c8bb2624d4f2cc8320467578c39a6ad (diff) |
SendQ bugfixes
Fix DoWrite running on errored sockets
Add testnet module for sendq and shutdown testing
Prevent DoWrite from trying to write when writes are blocking
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11768 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r-- | src/modules/m_testnet.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/modules/m_testnet.cpp b/src/modules/m_testnet.cpp new file mode 100644 index 000000000..a4bdfc561 --- /dev/null +++ b/src/modules/m_testnet.cpp @@ -0,0 +1,66 @@ +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits + * + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + +/* $ModDesc: Provides a module for testing the server while linked in a network */ + +#include "inspircd.h" + +class CommandTest : public Command +{ + public: + CommandTest(Module* parent) : Command(parent, "TEST", 1) + { + syntax = "<action> <parameters>"; + } + + CmdResult Handle(const std::vector<std::string> ¶meters, User *user) + { + if (parameters[0] == "flood") + { + unsigned int count = parameters.size() > 1 ? atoi(parameters[1].c_str()) : 100; + std::string line = parameters.size() > 2 ? parameters[2] : ":z.z NOTICE !flood :Flood text"; + for(unsigned int i=0; i < count; i++) + user->Write(line); + } + else if (parameters[0] == "freeze") + { + user->Penalty += 100; + } + else if (parameters[0] == "shutdown") + { + int i = parameters.size() > 1 ? atoi(parameters[1].c_str()) : 2; + ServerInstance->SE->Shutdown(user->GetFd(), i); + } + return CMD_SUCCESS; + } +}; + +class ModuleTest : public Module +{ + CommandTest cmd; + public: + ModuleTest() : cmd(this) + { + if (!strstr(ServerInstance->Config->ServerName, ".test")) + throw ModuleException("Don't load modules without reading their descriptions!"); + ServerInstance->AddCommand(&cmd); + } + + Version GetVersion() + { + return Version("Provides a module for testing the server while linked in a network", VF_VENDOR|VF_OPTCOMMON); + } +}; + +MODULE_INIT(ModuleTest) + |