X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fmain.cpp;h=bfd3f75eae34177a488ce8f3001e4ff90bbf17ef;hb=226a95aab09b9e1f43f61e78179bfa1135816c2d;hp=7282baac9449b01342a5ec72ec9bfe641a02eba8;hpb=1626437cbf963b16ce44ef6cc829957fd3a7e2ff;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index 7282baac9..bfd3f75ea 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -27,7 +27,6 @@ #include "socket.h" #include "xline.h" -#include "cachetimer.h" #include "resolvers.h" #include "main.h" #include "utils.h" @@ -38,10 +37,8 @@ #include "protocolinterface.h" ModuleSpanningTree::ModuleSpanningTree() + : commands(NULL), DNS(this, "DNS"), Utils(NULL) { - Utils = new SpanningTreeUtilities(this); - commands = new SpanningTreeCommands(this); - RefreshTimer = NULL; } SpanningTreeCommands::SpanningTreeCommands(ModuleSpanningTree* module) @@ -54,6 +51,8 @@ SpanningTreeCommands::SpanningTreeCommands(ModuleSpanningTree* module) void ModuleSpanningTree::init() { + Utils = new SpanningTreeUtilities(this); + commands = new SpanningTreeCommands(this); ServerInstance->Modules->AddService(commands->rconnect); ServerInstance->Modules->AddService(commands->rsquit); ServerInstance->Modules->AddService(commands->svsjoin); @@ -70,8 +69,6 @@ void ModuleSpanningTree::init() ServerInstance->Modules->AddService(commands->fhost); ServerInstance->Modules->AddService(commands->fident); ServerInstance->Modules->AddService(commands->fname); - RefreshTimer = new CacheRefreshTimer(Utils); - ServerInstance->Timers->AddTimer(RefreshTimer); Implementation eventlist[] = { @@ -196,8 +193,7 @@ restart: // ... if we can find a proper route to them if (tsock) { - tsock->WriteLine(":" + ServerInstance->Config->GetSID() + " PING " + - ServerInstance->Config->GetSID() + " " + s->GetID()); + tsock->WriteLine(":" + ServerInstance->Config->GetSID() + " PING " + s->GetID()); s->LastPingMsec = ts; } } @@ -273,8 +269,7 @@ void ModuleSpanningTree::ConnectServer(Link* x, Autoconnect* y) return; } - QueryType start_type = DNS_QUERY_A; - start_type = DNS_QUERY_AAAA; + DNS::QueryType start_type = DNS::QUERY_AAAA; if (strchr(x->IPAddr.c_str(),':')) { in6_addr n; @@ -304,16 +299,20 @@ void ModuleSpanningTree::ConnectServer(Link* x, Autoconnect* y) ServerInstance->GlobalCulls.AddItem(newsocket); } } + else if (!DNS) + { + ServerInstance->SNO->WriteToSnoMask('l', "CONNECT: Error connecting \002%s\002: Hostname given and m_dns.so is not loaded, unable to resolve.", x->Name.c_str()); + } else { + ServernameResolver* snr = new ServernameResolver(Utils, *DNS, x->IPAddr, x, start_type, y); try { - bool cached = false; - ServernameResolver* snr = new ServernameResolver(Utils, x->IPAddr, x, cached, start_type, y); - ServerInstance->AddResolver(snr, cached); + DNS->Process(snr); } - catch (ModuleException& e) + catch (DNS::Exception& e) { + delete snr; ServerInstance->SNO->WriteToSnoMask('l', "CONNECT: Error connecting \002%s\002: %s.",x->Name.c_str(), e.GetReason()); ConnectServer(y, false); } @@ -389,7 +388,7 @@ void ModuleSpanningTree::RemoteMessage(User* user, const char* format, ...) va_end(argsPtr); if (IS_LOCAL(user)) - user->WriteServ("NOTICE %s :%s", user->nick.c_str(), text); + user->WriteNotice(text); else ServerInstance->PI->SendUserNotice(user, text); } @@ -732,7 +731,7 @@ void ModuleSpanningTree::OnRehash(User* user) std::string msg = "Error in configuration: "; msg.append(e.GetReason()); ServerInstance->SNO->WriteToSnoMask('l', msg); - if (!IS_LOCAL(user)) + if (user && !IS_LOCAL(user)) ServerInstance->PI->SendSNONotice("L", msg); } } @@ -899,7 +898,7 @@ void ModuleSpanningTree::ProtoSendMetaData(void* opaque, Extensible* target, con if (u) s->WriteLine(":"+ServerInstance->Config->GetSID()+" METADATA "+u->uuid+" "+extname+" :"+extdata); else if (c) - s->WriteLine(":"+ServerInstance->Config->GetSID()+" METADATA "+c->name+" "+extname+" :"+extdata); + s->WriteLine(":"+ServerInstance->Config->GetSID()+" METADATA "+c->name+" "+ConvToStr(c->age)+" "+extname+" :"+extdata); else if (!target) s->WriteLine(":"+ServerInstance->Config->GetSID()+" METADATA * "+extname+" :"+extdata); } @@ -907,7 +906,6 @@ void ModuleSpanningTree::ProtoSendMetaData(void* opaque, Extensible* target, con CullResult ModuleSpanningTree::cull() { Utils->cull(); - ServerInstance->Timers->DelTimer(RefreshTimer); return this->Module::cull(); }