X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_spanningtree%2Ftreesocket2.cpp;h=06c547ac31fe961f4cadc5ecd7fdbff5881852d9;hb=72286cca740b374661a03d8544ca28d9237875ad;hp=9ab8fc49002b541f99db6f3256cb503faae17653;hpb=aafc03bdfc34c9426df44938403c92dbbbc0568e;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/treesocket2.cpp b/src/modules/m_spanningtree/treesocket2.cpp index 9ab8fc490..06c547ac3 100644 --- a/src/modules/m_spanningtree/treesocket2.cpp +++ b/src/modules/m_spanningtree/treesocket2.cpp @@ -1,11 +1,14 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2007-2008, 2012 Robin Burchell + * Copyright (C) 2019 linuxdaemon + * Copyright (C) 2013, 2018-2019 Sadie Powell + * Copyright (C) 2013 Adam + * Copyright (C) 2012-2016 Attila Molnar + * Copyright (C) 2012, 2019 Robby * Copyright (C) 2009-2010 Daniel De Graaf - * Copyright (C) 2007-2008 Craig Edwards - * Copyright (C) 2008 Pippijn van Steenhoven - * Copyright (C) 2008 Thomas Stagner + * Copyright (C) 2008, 2012 Robin Burchell + * Copyright (C) 2007-2008, 2010 Craig Edwards * Copyright (C) 2007 Dennis Friis * * This file is part of InspIRCd. InspIRCd is free software: you can @@ -155,19 +158,19 @@ void TreeSocket::ProcessLine(std::string &line) } else if (command == "BURST") { - if (params.size()) + if (!params.empty()) { time_t them = ConvToNum(params[0]); time_t delta = them - ServerInstance->Time(); - if ((delta < -600) || (delta > 600)) + if ((delta < -60) || (delta > 60)) { - ServerInstance->SNO->WriteGlobalSno('l',"\2ERROR\2: Your clocks are out by %ld seconds (this is more than five minutes). Link aborted, \2PLEASE SYNC YOUR CLOCKS!\2",labs((long)delta)); - SendError("Your clocks are out by "+ConvToStr(labs((long)delta))+" seconds (this is more than five minutes). Link aborted, PLEASE SYNC YOUR CLOCKS!"); + ServerInstance->SNO->WriteGlobalSno('l', "\002ERROR\002: Your clocks are off by %ld seconds (this is more than one minute). Link aborted, \002PLEASE SYNC YOUR CLOCKS!\002", labs((long)delta)); + SendError("Your clocks are out by "+ConvToStr(labs((long)delta))+" seconds (this is more than one minute). Link aborted, PLEASE SYNC YOUR CLOCKS!"); return; } - else if ((delta < -30) || (delta > 30)) + else if ((delta < -15) || (delta > 15)) { - ServerInstance->SNO->WriteGlobalSno('l',"\2WARNING\2: Your clocks are out by %ld seconds. Please consider synching your clocks.", labs((long)delta)); + ServerInstance->SNO->WriteGlobalSno('l', "\002WARNING\002: Your clocks are off by %ld seconds. Please consider syncing your clocks.", labs((long)delta)); } } @@ -292,7 +295,7 @@ void TreeSocket::ProcessTag(User* source, const std::string& tag, ClientProtocol for (Events::ModuleEventProvider::SubscriberList::const_iterator i = list.begin(); i != list.end(); ++i) { ClientProtocol::MessageTagProvider* const tagprov = static_cast(*i); - const ModResult res = tagprov->OnClientProtocolProcessTag(source, tagkey, tagval); + const ModResult res = tagprov->OnProcessTag(source, tagkey, tagval); if (res == MOD_RES_ALLOW) tags.insert(std::make_pair(tagkey, ClientProtocol::MessageTagData(tagprov, tagval))); else if (res == MOD_RES_DENY) @@ -333,7 +336,7 @@ void TreeSocket::ProcessConnectedLine(std::string& taglist, std::string& prefix, } // Translate commands coming from servers using an older protocol - if (proto_version < ProtocolVersion) + if (proto_version < PROTO_NEWEST) { if (!PreProcessOldProtocolMessage(who, command, params)) return; @@ -359,7 +362,7 @@ void TreeSocket::ProcessConnectedLine(std::string& taglist, std::string& prefix, return; } - throw ProtocolException("Unknown command"); + throw ProtocolException("Unknown command: " + command); } cmdbase = cmd; } @@ -376,22 +379,25 @@ void TreeSocket::ProcessConnectedLine(std::string& taglist, std::string& prefix, } CmdResult res; + ClientProtocol::TagMap tags; + std::string tag; + irc::sepstream tagstream(taglist, ';'); + while (tagstream.GetToken(tag)) + ProcessTag(who, tag, tags); + + CommandBase::Params newparams(params, tags); + if (scmd) - res = scmd->Handle(who, params); + res = scmd->Handle(who, newparams); else { - ClientProtocol::TagMap tags; - std::string tag; - irc::sepstream tagstream(taglist, ';'); - while (tagstream.GetToken(tag)) - ProcessTag(who, tag, tags); - res = cmd->Handle(who, CommandBase::Params(params, tags)); + res = cmd->Handle(who, newparams); if (res == CMD_INVALID) throw ProtocolException("Error in command handler"); } if (res == CMD_SUCCESS) - Utils->RouteCommand(server->GetRoute(), cmdbase, params, who); + Utils->RouteCommand(server->GetRoute(), cmdbase, newparams, who); } void TreeSocket::OnTimeout() @@ -412,15 +418,15 @@ void TreeSocket::Close() // If the connection is fully up (state CONNECTED) // then propogate a netsplit to all peers. if (MyRoot) - MyRoot->SQuit(getError()); + MyRoot->SQuit(getError(), true); - ServerInstance->SNO->WriteGlobalSno('l', "Connection to '\2%s\2' failed.",linkID.c_str()); + ServerInstance->SNO->WriteGlobalSno('l', "Connection to '\002%s\002' failed.", linkID.c_str()); time_t server_uptime = ServerInstance->Time() - this->age; if (server_uptime) { - std::string timestr = ModuleSpanningTree::TimeToStr(server_uptime); - ServerInstance->SNO->WriteGlobalSno('l', "Connection to '\2%s\2' was established for %s", linkID.c_str(), timestr.c_str()); + std::string timestr = InspIRCd::DurationString(server_uptime); + ServerInstance->SNO->WriteGlobalSno('l', "Connection to '\002%s\002' was established for %s", linkID.c_str(), timestr.c_str()); } }