diff options
-rw-r--r-- | include/modules.h | 13 | ||||
-rw-r--r-- | src/users.c | 5 |
2 files changed, 15 insertions, 3 deletions
diff --git a/include/modules.h b/include/modules.h index b2c04582f..51ffea816 100644 --- a/include/modules.h +++ b/include/modules.h @@ -512,7 +512,16 @@ class CoreExport Module */ virtual EventReturn OnBotUnAssign(User *sender, ChannelInfo *ci) { return EVENT_CONTINUE; } - virtual void OnSaveDatabase() { } + /** Called when a new user connects to the network. + * @param u The connecting user. + */ + virtual void OnUserConnect(User *u) { } + + /** Called when anope saves databases. + * NOTE: This event is deprecated pending new database handling. + * XXX. + */ + virtual void OnSaveDatabase() MARK_DEPRECATED { } }; @@ -521,7 +530,7 @@ class CoreExport Module enum Implementation { I_BEGIN, - I_OnUserKicked, I_OnReload, I_OnBotAssign, I_OnBotUnAssign, I_OnSaveDatabase, + I_OnUserKicked, I_OnReload, I_OnBotAssign, I_OnBotUnAssign, I_OnSaveDatabase, I_OnUserConnect, I_END }; diff --git a/src/users.c b/src/users.c index 450e8f764..5bda7db9d 100644 --- a/src/users.c +++ b/src/users.c @@ -13,6 +13,7 @@ */ #include "services.h" +#include "modules.h" #define HASH(nick) (((nick)[0]&31)<<5 | ((nick)[1]&31)) User *userlist[1024]; @@ -614,6 +615,7 @@ User *do_nick(const char *source, const char *nick, const char *username, const if (LimitSessions && !is_ulined(server)) add_session(nick, host, ipbuf); + /* Allocate User structure and fill it in. */ user = new User(nick, uid ? uid : ""); user->SetIdent(username); @@ -634,7 +636,8 @@ User *do_nick(const char *source, const char *nick, const char *username, const display_news(user, NEWS_LOGON); display_news(user, NEWS_RANDOM); - send_event(EVENT_NEWNICK, 1, nick); + + FOREACH_MOD(I_OnUserConnect, OnUserConnect(user)); } else { /* An old user changing nicks. */ if (ircd->ts6) |