diff options
author | Sadie Powell <sadie@witchery.services> | 2023-08-06 13:36:27 +0100 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2023-08-06 13:36:27 +0100 |
commit | adf820c08a0cdd404ce266da38c240390b43f0d0 (patch) | |
tree | bf17318745c9d16b739ce72e873c880b21dd2e55 /src | |
parent | 377ba87d52ce131ffba3a78f877da7230c9a1330 (diff) | |
parent | 0715db71829786ec98c6922a9e32077ae396c87e (diff) |
Merge branch 2.0 into 2.1.
Diffstat (limited to 'src')
-rw-r--r-- | src/logger.cpp | 2 | ||||
-rw-r--r-- | src/misc.cpp | 22 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/logger.cpp b/src/logger.cpp index 2bee1a80e..532369c3b 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -88,7 +88,7 @@ Log::Log(LogType t, CommandSource &src, Command *_c, ChannelInfo *_ci) : u(src.G size_t sl = c->name.find('/'); if (sl != Anope::string::npos) - this->bi = BotInfo::Find(c->name.substr(0, sl), true); + this->bi = Config->GetClient(c->name.substr(0, sl)); this->category = c->name; } diff --git a/src/misc.cpp b/src/misc.cpp index 36e6d5b1f..0728daab1 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -705,7 +705,13 @@ Anope::string Anope::NormalizeBuffer(const Anope::string &buf) Anope::string Anope::Resolve(const Anope::string &host, int type) { - Anope::string result = host; + std::vector<Anope::string> results = Anope::ResolveMultiple(host, type); + return results.empty() ? host : results[0]; +} + +std::vector<Anope::string> Anope::ResolveMultiple(const Anope::string &host, int type) +{ + std::vector<Anope::string> results; addrinfo hints; memset(&hints, 0, sizeof(hints)); @@ -716,15 +722,19 @@ Anope::string Anope::Resolve(const Anope::string &host, int type) addrinfo *addrresult = NULL; if (getaddrinfo(host.c_str(), NULL, &hints, &addrresult) == 0) { - sockaddrs addr; - memcpy(static_cast<void*>(&addr), addrresult->ai_addr, addrresult->ai_addrlen); - result = addr.addr(); - Log(LOG_DEBUG_2) << "Resolver: " << host << " -> " << result; + for (addrinfo *thisresult = addrresult; thisresult; thisresult = thisresult->ai_next) + { + sockaddrs addr; + memcpy(static_cast<void*>(&addr), thisresult->ai_addr, thisresult->ai_addrlen); + + results.push_back(addr.addr()); + Log(LOG_DEBUG_2) << "Resolver: " << host << " -> " << addr.addr(); + } freeaddrinfo(addrresult); } - return result; + return results; } Anope::string Anope::Random(size_t len) |