diff options
-rw-r--r-- | src/modules/m_spanningtree/treesocket2.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp index a8451610f..c671ebded 100644 --- a/src/modules/m_spanningtree/treesocket2.cpp +++ b/src/modules/m_spanningtree/treesocket2.cpp @@ -1492,9 +1492,21 @@ bool TreeSocket::ProcessLine(std::string &line) userrec* x = this->Instance->FindNickOnly(params[0]); if ((x) && (x != who)) { + int collideret = 0; /* x is local, who is remote */ - this->DoCollision(x, who->age, who->ident, who->GetIPString(), who->uuid); - return true; + collideret = this->DoCollision(x, who->age, who->ident, who->GetIPString(), who->uuid); + if (collideret != 1) + { + /* + * Remote client lost, or both lost, + * parsing this nickchange would be + * pointless, as the incoming client's + * server will soon recieve SVSNICK to + * change its nick to its UID. :) + * -- w00t + */ + return true; + } /* Old nickname collision logic.. std::deque<std::string> p; |