From 02aee47d7229482adce42be81a0c6350890e1673 Mon Sep 17 00:00:00 2001 From: w00t Date: Mon, 27 Aug 2007 19:12:22 +0000 Subject: Document the use of SVSNICK to fix a remote user on collide git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7911 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_spanningtree/treesocket1.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/modules/m_spanningtree/treesocket1.cpp b/src/modules/m_spanningtree/treesocket1.cpp index 6a092425d..c650eff3c 100644 --- a/src/modules/m_spanningtree/treesocket1.cpp +++ b/src/modules/m_spanningtree/treesocket1.cpp @@ -1027,6 +1027,17 @@ bool TreeSocket::ParseUID(const std::string &source, std::deque &pa } if (bChangeRemote) { + /* + * Cheat a little here. Instead of a dedicated command to change UID, + * use SVSNICK and accept their client with it's UID (as we know the SVSNICK will + * not fail under any circumstances -- UIDs are netwide exclusive). + * + * This means that each side of a collide will generate one extra NICK back to where + * they have just linked (and where it got the SVSNICK from), however, it will + * be dropped harmlessly as it will come in as :928AAAB NICK 928AAAB, and we already + * have 928AAAB's nick set to that. + * -- w00t + */ this->WriteLine(std::string(":")+this->Instance->Config->ServerName+" SVSNICK "+params[0]+" " + params[0]); /* also, don't trample on the hash - use their UID as nick */ tempnick = params[0].c_str(); -- cgit v1.2.3