From ecee8268b239c22cc68dd624779aae84e6020939 Mon Sep 17 00:00:00 2001 From: brain Date: Sun, 5 Feb 2006 16:08:46 +0000 Subject: Propogation of away messages across network (we dont bounce the numeric back for every privmsg like other ircds, we burst them and keep them synched by broadcasting AWAY) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@3095 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_spanningtree.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/modules/m_spanningtree.cpp') diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp index a064aa7d0..c6aa83ee2 100644 --- a/src/modules/m_spanningtree.cpp +++ b/src/modules/m_spanningtree.cpp @@ -1248,6 +1248,10 @@ class TreeSocket : public InspSocket { this->WriteLine(":"+std::string(u->second->nick)+" OPERTYPE "+std::string(u->second->oper)); } + if (*u->second->awaymsg) + { + this->WriteLine(":"+std::string(u->second->nick)+" AWAY :"+std::string(u->second->awaymsg)); + } FOREACH_MOD(I_OnSyncUser,OnSyncUser(u->second,(Module*)TreeProtocolModule,(void*)this)); list.clear(); u->second->GetExtList(list); @@ -3323,6 +3327,20 @@ class ModuleSpanningTree : public Module } } + virtual void OnSetAway(userrec* user) + { + std::deque params; + params.push_back(":"+std::string(u->awaymsg)); + DoOneToMany(user->nick,"AWAY",params); + } + + virtual void OnCancelAway(userrec* user) + { + std::deque params; + params.push_back(":"); + DoOneToMany(user->nick,"AWAY",params); + } + virtual void ProtoSendMode(void* opaque, int target_type, void* target, std::string modeline) { TreeSocket* s = (TreeSocket*)opaque; @@ -3392,7 +3410,7 @@ class ModuleSpanningTree : public Module List[I_OnUserQuit] = List[I_OnUserPostNick] = List[I_OnUserKick] = List[I_OnRemoteKill] = List[I_OnRehash] = 1; List[I_OnOper] = List[I_OnAddGLine] = List[I_OnAddZLine] = List[I_OnAddQLine] = List[I_OnAddELine] = 1; List[I_OnDelGLine] = List[I_OnDelZLine] = List[I_OnDelQLine] = List[I_OnDelELine] = List[I_ProtoSendMode] = List[I_OnMode] = 1; - List[I_OnStats] = List[I_ProtoSendMetaData] = List[I_OnEvent] = 1; + List[I_OnStats] = List[I_ProtoSendMetaData] = List[I_OnEvent] = List[I_OnSetAway] = List[I_OnCancelAway] = 1; } /* It is IMPORTANT that m_spanningtree is the last module in the chain -- cgit v1.2.3