X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Ftreesocket2.cpp;h=34cf318e30d9ec7488d445ca500d89db9b73f53a;hb=1211f840f16bacb21425eedba6794dfc8b39da40;hp=4d62c3b83593ca6160a3fe8c167738a16a517701;hpb=f8e460b127b3d8f57e42276016dc94dd5d4ecf82;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp index 4d62c3b83..34cf318e3 100644 --- a/src/modules/m_spanningtree/treesocket2.cpp +++ b/src/modules/m_spanningtree/treesocket2.cpp @@ -799,6 +799,7 @@ bool TreeSocket::RemoteServer(const std::string &prefix, std::deque this->Instance->SNO->WriteToSnoMask('l',"Server \2"+servername+"\2 being introduced from \2" + prefix + "\2 denied, already exists. Closing link with " + prefix); return false; } + Link* lnk = Utils->FindLink(servername); TreeServer *Node = new TreeServer(this->Utils, this->Instance, servername, description, sid, ParentOfThis,NULL, lnk ? lnk->Hidden : false); @@ -950,7 +951,17 @@ bool TreeSocket::Inbound_Server(std::deque ¶ms) CheckDupeSocket->Close(); return false; } - /* Now check for fully initialized instances of the server */ + /* Check for fully initialized instances of the server by id */ + Instance->Log(DEBUG,"Looking for dupe SID %s", sid.c_str()); + TreeServer* CheckDupeSID = Utils->FindServerID(sid); + if (CheckDupeSID) + { + this->SendError("Server ID "+CheckDupeSID->GetID()+" already exists on server "+CheckDupeSID->GetName()+"!"); + this->Instance->SNO->WriteToSnoMask('l',"Server connection from \2"+sname+"\2 denied, server ID '"+CheckDupeSID->GetID()+ + "' already exists on server "+CheckDupeSID->GetName()); + return false; + } + /* Now check for fully initialized instances of the server by name */ TreeServer* CheckDupe = Utils->FindServer(sname); if (CheckDupe) {