From 2b3394855d5adddb16285b905503d9ffe5a1d963 Mon Sep 17 00:00:00 2001 From: w00t Date: Mon, 27 Aug 2007 16:05:59 +0000 Subject: Add a metric assload of TRANSLATE macros to modules. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7892 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_spanningtree/treesocket1.cpp | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/modules/m_spanningtree') diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp index 21882eda8..c75bf17e9 100644 --- a/src/modules/m_spanningtree/treesocket1.cpp +++ b/src/modules/m_spanningtree/treesocket1.cpp @@ -965,6 +965,37 @@ bool TreeSocket::ParseUID(const std::string &source, std::deque &pa if (iter != this->Instance->clientlist->end()) { + /* + * Nick collision. + * Under old protocol rules, we would have had to kill both clients. + * Really, this sucks. + * These days, we have UID. And, so what we do is, force nick change client(s) + * involved according to timestamp rules. + * + * RULES: + * user@host equal: + * Force nick change on OLDER timestamped client + * user@host differ: + * Force nick change on NEWER timestamped client + * TS EQUAL: + * FNC both. + * + * Note that remote clients MUST be dealt with also to remove desyncs. + * XXX we don't do this yet. + * + * This stops abusive use of collisions, simplifies problems with loops, and so on. + * -- w00t + */ + + if (age == iter->second->signon) + { + /* TS equal, do both */ + + } + else + { + } + /* * Uh oh, nick collision. Under old rules, we'd kill both. These days now we have UUID, * we force both clients to change nick to their UUID. Just change ours, and the other -- cgit v1.2.3