X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Ftreeserver.cpp;h=61a06cdd39333a9d0b16347b33986fd687ef2687;hb=53fbf0cf7f41a5644a8776980f2de99db3d03245;hp=50b5d7949506748d677698101ea378b88d773f85;hpb=dd98d56cabcd08a3d5207454e002b187af98d28a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp index 50b5d7949..61a06cdd3 100644 --- a/src/modules/m_spanningtree/treeserver.cpp +++ b/src/modules/m_spanningtree/treeserver.cpp @@ -27,11 +27,12 @@ TreeServer::TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, const std::string &id) : ServerInstance(Instance), Utils(Util) { Parent = NULL; + bursting = false; ServerName.clear(); ServerDesc.clear(); VersionString.clear(); ServerUserCount = ServerOperCount = 0; - rtt = LastPing = 0; + StartBurst = rtt = 0; Warned = Hidden = DupError = false; VersionString = ServerInstance->GetVersionString(); SetID(id); @@ -44,13 +45,14 @@ TreeServer::TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, const st TreeServer::TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::string Name, std::string Desc, const std::string &id) : ServerInstance(Instance), ServerName(Name.c_str()), ServerDesc(Desc), Utils(Util) { + bursting = false; Parent = NULL; VersionString.clear(); ServerUserCount = ServerOperCount = 0; VersionString = ServerInstance->GetVersionString(); Route = NULL; Socket = NULL; /* Fix by brain */ - rtt = LastPing = 0; + StartBurst = rtt = 0; Warned = Hidden = DupError = false; AddHashEntry(); SetID(id); @@ -63,12 +65,20 @@ TreeServer::TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::str TreeServer::TreeServer(SpanningTreeUtilities* Util, InspIRCd* Instance, std::string Name, std::string Desc, const std::string &id, TreeServer* Above, TreeSocket* Sock, bool Hide) : ServerInstance(Instance), Parent(Above), ServerName(Name.c_str()), ServerDesc(Desc), Socket(Sock), Utils(Util), Hidden(Hide) { + bursting = false; VersionString.clear(); ServerUserCount = ServerOperCount = 0; this->SetNextPingTime(time(NULL) + Utils->PingFreq); this->SetPingFlag(); DupError = false; - rtt = LastPing = 0; + StartBurst = rtt = 0; + + timeval t; + gettimeofday(&t, NULL); + long ts = (t.tv_sec * 1000) + (t.tv_usec / 1000); + this->StartBurst = ts; + Instance->Logs->Log("m_spanningtree",DEBUG, "Started bursting at time %lu", ts); + /* find the 'route' for this server (e.g. the one directly connected * to the local server, which we can use to reach it) * @@ -130,9 +140,22 @@ std::string& TreeServer::GetID() return sid; } +void TreeServer::FinishBurst() +{ + this->bursting = false; + ServerInstance->XLines->ApplyLines(); + timeval t; + gettimeofday(&t, NULL); + long ts = (t.tv_sec * 1000) + (t.tv_usec / 1000); + unsigned long bursttime = ts - this->StartBurst; + ServerInstance->SNO->WriteToSnoMask('l', "Received end of netburst from \2%s\2 (burst time: %lu %s)", ServerName.c_str(), (bursttime > 1000 ? bursttime / 1000 : bursttime), (bursttime > 1000 ? "secs" : "msecs")); + Event rmode((char*)ServerName.c_str(), (Module*)Utils->Creator, "new_server"); + rmode.Send(ServerInstance); +} + void TreeServer::SetID(const std::string &id) { - ServerInstance->Log(DEBUG, "Setting SID to " + id); + ServerInstance->Logs->Log("m_spanningtree",DEBUG, "Setting SID to " + id); sid = id; server_hash::iterator iter = Utils->sidlist.find(sid); if (iter == Utils->sidlist.end())