diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-11-02 20:13:10 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-11-02 20:13:10 +0000 |
commit | 8d395f8c46ca9f61710a6c30e2e24c0b9627d2e8 (patch) | |
tree | cfbf53eb9014f41a8200ae1a6dacfab36963361c /src/modules/m_spanningtree/main.cpp | |
parent | f2b187052b6086d1a65ef9281f9aca9270075f06 (diff) |
Implement DELLINE, allow both DELLINE and ADDLINE to take a server OR client origin
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8468 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_spanningtree/main.cpp')
-rw-r--r-- | src/modules/m_spanningtree/main.cpp | 54 |
1 files changed, 22 insertions, 32 deletions
diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 2e743689c..470ae7b36 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -738,50 +738,40 @@ void ModuleSpanningTree::OnOper(User* user, const std::string &opertype) void ModuleSpanningTree::OnAddLine(XLine* line, User* user) { + char data[MAXBUF]; + snprintf(data,MAXBUF,"%s %s %s %lu %lu :%s", line->type.c_str(), line->Displayable(), ServerInstance->Config->ServerName, line->set_time, + line->duration, line->reason); + std::deque<std::string> params; + params.push_back(data); + if (!user) { /* Server-set lines */ - char data[MAXBUF]; - snprintf(data,MAXBUF,"%s %s %s %lu %lu :%s", line->type.c_str(), line->Displayable(), ServerInstance->Config->ServerName, line->set_time, - line->duration, line->reason); - std::deque<std::string> params; - params.push_back(data); Utils->DoOneToMany(ServerInstance->Config->GetSID(), "ADDLINE", params); } - else + else if (IS_LOCAL(user)) { - /** XXX: This is WRONG and needs fixing. - * We need to implement a DELLINE - */ - if (user && IS_LOCAL(user)) - { - char type[8]; - snprintf(type,8,"%sLINE",line->type.c_str()); - std::string stype(type); - char sduration[MAXBUF]; - snprintf(sduration,MAXBUF,"%ld",line->duration); - std::deque<std::string> params; - params.push_back(line->Displayable()); - params.push_back(ConvToStr(line->duration)); - params.push_back(std::string(":")+line->reason); - Utils->DoOneToMany(user->uuid,stype,params); - } + /* User-set lines */ + Utils->DoOneToMany(user->uuid, "ADDLINE", params); } } void ModuleSpanningTree::OnDelLine(XLine* line, User* user) { - if (user && IS_LOCAL(user)) + char data[MAXBUF]; + snprintf(data,MAXBUF,"%s %s", line->type.c_str(), line->Displayable()); + std::deque<std::string> params; + params.push_back(data); + + if (!user) { - /** XXX: This is WRONG and needs fixing. - * We need to implement a DELLINE - */ - char type[8]; - snprintf(type,8,"%sLINE",line->type.c_str()); - std::string stype(type); - std::deque<std::string> params; - params.push_back(line->Displayable()); - Utils->DoOneToMany(user->uuid,stype,params); + /* Server-unset lines */ + Utils->DoOneToMany(ServerInstance->Config->GetSID(), "DELLINE", params); + } + else if (IS_LOCAL(user)) + { + /* User-unset lines */ + Utils->DoOneToMany(user->uuid, "DELLINE", params); } } |