From ab9c1e46513ffd2b44fb30fbc0845e7474d1c5fa Mon Sep 17 00:00:00 2001 From: rburchell Date: Tue, 31 Mar 2009 14:43:04 +0000 Subject: [PATCH] Fix ss_main's client introduction. git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2226 5417fbe8-f217-4b02-8779-1006273d7864 --- include/modules.h | 8 +++++++- src/core/ss_main.c | 27 +++++++++++++-------------- src/servers.c | 3 ++- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/include/modules.h b/include/modules.h index 15cdfc39c..f0da30255 100644 --- a/include/modules.h +++ b/include/modules.h @@ -505,6 +505,11 @@ class CoreExport Module */ virtual void OnUserConnect(User *u) { } + /** Called when a new server connects to the network. + * @param sname The server name that is connecting + */ + virtual void OnServerConnect(const std::string &sname) { } + /** Called when anope saves databases. * NOTE: This event is deprecated pending new database handling. * XXX. @@ -523,7 +528,8 @@ class CoreExport Module enum Implementation { I_BEGIN, - I_OnUserKicked, I_OnReload, I_OnBotAssign, I_OnBotUnAssign, I_OnSaveDatabase, I_OnUserConnect, I_OnBackupDatabase, + I_OnUserKicked, I_OnReload, I_OnBotAssign, I_OnBotUnAssign, I_OnUserConnect, I_OnServerConnect, + I_OnSaveDatabase, I_OnBackupDatabase, I_END }; diff --git a/src/core/ss_main.c b/src/core/ss_main.c index a0a855dd8..c92ce5211 100644 --- a/src/core/ss_main.c +++ b/src/core/ss_main.c @@ -47,12 +47,12 @@ class SSMain : public Module if (servsock == -1) { -// EvtHook *hook = createEventHook(EVENT_SERVER_CONNECT, statserv_create); -// this->AddEventHook(hook); + ModuleManager::Attach(I_OnServerConnect, this); } else statserv_create(0, NULL); } + ~SSMain() { CommandHash *current; @@ -71,18 +71,17 @@ class SSMain : public Module delete statserv; } } + + void OnServerConnect(const std::string &sname) + { + statserv = findbot("StatServ"); + if (!statserv) + { + statserv = new BotInfo("StatServ", ServiceUser, ServiceHost, "Stats Service"); + ircdproto->SendClientIntroduction("StatServ", ServiceUser, ServiceHost, "Stats Service", ircd->pseudoclient_mode, statserv->uid.c_str()); + } + statserv->cmdTable = cmdTable; + } }; -int statserv_create(int argc, char **argv) -{ - statserv = findbot("StatServ"); - if (!statserv) - { - statserv = new BotInfo("StatServ", ServiceUser, ServiceHost, "Stats Service"); - ircdproto->SendClientIntroduction("StatServ", ServiceUser, ServiceHost, "Stats Service", ircd->pseudoclient_mode, statserv->uid.c_str()); - } - statserv->cmdTable = cmdTable; - return MOD_CONT; -} - MODULE_INIT("ss_main", SSMain) diff --git a/src/servers.c b/src/servers.c index b6f16eaa7..e66c5be98 100644 --- a/src/servers.c +++ b/src/servers.c @@ -13,6 +13,7 @@ */ #include "services.h" +#include "modules.h" Server *servlist = NULL; Server *me_server = NULL; /* This are we */ @@ -402,7 +403,7 @@ void do_server(const char *source, const char *servername, const char *hops, throw CoreException("Recieved a server from a nonexistant uplink?"); new_server(s, servername, descript, 0, numeric); - send_event(EVENT_SERVER_CONNECT, 1, servername); + FOREACH_MOD(I_OnServerConnect, OnServerConnect(servername)); } /*************************************************************************/