From f861c272dbe8153980036cd421b8ddffb00ffdd8 Mon Sep 17 00:00:00 2001 From: brain Date: Sun, 6 May 2007 20:15:55 +0000 Subject: 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 --- src/modules/m_conn_lusers.cpp | 107 ------------------------------------------ src/users.cpp | 6 +++ 2 files changed, 6 insertions(+), 107 deletions(-) delete mode 100644 src/modules/m_conn_lusers.cpp (limited to 'src') 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'. -- cgit v1.2.3