summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-05-06 20:15:55 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-05-06 20:15:55 +0000
commitf861c272dbe8153980036cd421b8ddffb00ffdd8 (patch)
tree0f291a37c4a68c63de50f17c2c75ea75cdd3b7da
parentae7c3cf06646e18a9cbe4bf63d4c993606698326 (diff)
Fix for bug #278 reported by aredridel, LUSERS output is required as per RFC 1459 on connect, m_conn_lusers is therefore redundant (so i removed it :p)
The core automatically triggers an LUSERS on connect now, which modules can still intercept the way they always have. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@6898 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r--src/modules/m_conn_lusers.cpp107
-rw-r--r--src/users.cpp6
2 files changed, 6 insertions, 107 deletions
diff --git a/src/modules/m_conn_lusers.cpp b/src/modules/m_conn_lusers.cpp
deleted file mode 100644
index 03abce541..000000000
--- a/src/modules/m_conn_lusers.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/* +------------------------------------+
- * | Inspire Internet Relay Chat Daemon |
- * +------------------------------------+
- *
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
- * See: http://www.inspircd.org/wiki/index.php/Credits
- *
- * This program is free but copyrighted software; see
- * the file COPYING for details.
- *
- * ---------------------------------------------------
- */
-
-#include "users.h"
-#include "channels.h"
-#include "modules.h"
-#include "inspircd.h"
-
-/* $ModDesc: Sends the /LUSERS on connect */
-
-
-
-// This has to be the simplest module ever.
-// The RFC doesnt specify that you should send the /LUSERS numerics
-// on connect, but someone asked for it, so its in a module.
-
-class ModuleConnLUSERS : public Module
-{
- private:
-
-
- public:
- ModuleConnLUSERS(InspIRCd* Me)
- : Module::Module(Me)
- {
-
- }
-
- virtual ~ModuleConnLUSERS()
- {
- }
-
- virtual Version GetVersion()
- {
- return Version(1,1,0,1,VF_VENDOR,API_VERSION);
- }
-
- void Implements(char* List)
- {
- List[I_OnUserConnect] = 1;
- }
-
- virtual void OnUserConnect(userrec* user)
- {
- // if we're using a protocol module, we cant just call
- // the command handler because the protocol module
- // has hooked it. We must call OnPreCommand in the
- // protocol module. Yes, at some point there will
- // be a way to get the current protocol module's name
- // from the core and probably a pointer to its class.
- Module* Proto = ServerInstance->FindModule("m_spanningtree.so");
- if (Proto)
- {
- Proto->OnPreCommand("LUSERS", NULL, 0, user, true, "LUSERS");
- }
- else
- {
- ServerInstance->CallCommandHandler("LUSERS", NULL, 0, user);
- }
- }
-};
-
-
-//
-// The ModuleConnLUSERSFactory class inherits from ModuleFactory
-// and creates a ModuleConnLUSERS object when requested.
-//
-
-class ModuleConnLUSERSFactory : public ModuleFactory
-{
- public:
- ModuleConnLUSERSFactory()
- {
- }
-
- ~ModuleConnLUSERSFactory()
- {
- }
-
- virtual Module * CreateModule(InspIRCd* Me)
- {
- return new ModuleConnLUSERS(Me);
- }
-
-};
-
-
-//
-// The "C" linkage factory0() function creates the ModuleConnLUSERSFactory
-// class for this library
-//
-
-extern "C" void * init_module( void )
-{
- return new ModuleConnLUSERSFactory;
-}
-
diff --git a/src/users.cpp b/src/users.cpp
index 59d19adff..637d7aaf8 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -1060,6 +1060,12 @@ void userrec::FullConnect()
if (ServerInstance->unregistered_count)
ServerInstance->unregistered_count--;
+ /* Trigger LUSERS output, give modules a chance too */
+ int MOD_RESULT = 0;
+ FOREACH_RESULT(I_OnPreCommand, OnPreCommand("LUSERS", NULL, 0, this, true, "LUSERS"));
+ if (!MOD_RESULT)
+ ServerInstance->CallCommandHandler("LUSERS", NULL, 0, this);
+
/*
* fix 3 by brain, move registered = 7 below these so that spurious modes and host
* changes dont go out onto the network and produce 'fake direction'.