diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2005-12-08 20:21:43 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2005-12-08 20:21:43 +0000 |
commit | 8e2f50ab779bcd903dbe46a5f11c4ee5ceb0730b (patch) | |
tree | 9dbbcda89d7a0d8b80811ee3b40f9c6fc3841a75 /src | |
parent | 7271c8da88b3461fb5b3b3a80d455400f0c75880 (diff) |
Added 'fake direction' check
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2278 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/modules/m_spanningtree.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/modules/m_spanningtree.cpp b/src/modules/m_spanningtree.cpp index ce2843d18..a98e90add 100644 --- a/src/modules/m_spanningtree.cpp +++ b/src/modules/m_spanningtree.cpp @@ -1629,6 +1629,23 @@ class TreeSocket : public InspSocket // This is the 'authenticated' state, when all passwords // have been exchanged and anything past this point is taken // as gospel. + + if (prefix != "") + { + std::string direction = prefix; + userrec* t = Srv->FindNick(prefix); + if (t) + { + direction = t->server; + } + TreeServer* route_back_again = BestRouteTo(direction); + if ((!route_back_again) || (back_again->GetSocket() != this)) + { + WriteOpers("*** \2WARNING\2! Fake direction in command '%s' from connection '%s'",line.c_str(),this->GetName()); + return true; + } + } + if (command == "SVSMODE") { /* Services expects us to implement |