cleanups/simplifications

pull/1969/head
Jason Rhinelander 2 years ago
parent 9ddf7413af
commit 15144f193c
No known key found for this signature in database
GPG Key ID: C4992CE7A88D4262

@ -153,6 +153,7 @@ namespace llarp::dns
if (err) if (err)
{ {
// some kind of error from upstream // some kind of error from upstream
log::warning(logcat, "Upstream DNS failure: {}", ub_strerror(err));
query->Cancel(); query->Cancel();
return; return;
} }
@ -352,7 +353,7 @@ namespace llarp::dns
if (auto loop_ptr = loop->MaybeGetUVWLoop()) if (auto loop_ptr = loop->MaybeGetUVWLoop())
{ {
m_Poller = loop_ptr->resource<uvw::PollHandle>(ub_fd(m_ctx.get())); m_Poller = loop_ptr->resource<uvw::PollHandle>(ub_fd(m_ctx.get()));
m_Poller->on<uvw::PollEvent>([ptr = std::weak_ptr<ub_ctx>{m_ctx}](auto&, auto&) { m_Poller->on<uvw::PollEvent>([ptr = std::weak_ptr{m_ctx}](auto&, auto&) {
if (auto ctx = ptr.lock()) if (auto ctx = ptr.lock())
ub_process(ctx.get()); ub_process(ctx.get());
}); });
@ -377,7 +378,7 @@ namespace llarp::dns
if (auto loop_ptr = loop->MaybeGetUVWLoop()) if (auto loop_ptr = loop->MaybeGetUVWLoop())
{ {
m_Poller = loop_ptr->resource<uvw::PollHandle>(ub_fd(m_ctx.get())); m_Poller = loop_ptr->resource<uvw::PollHandle>(ub_fd(m_ctx.get()));
m_Poller->on<uvw::PollEvent>([ptr = std::weak_ptr<ub_ctx>{m_ctx}](auto&, auto&) { m_Poller->on<uvw::PollEvent>([ptr = std::weak_ptr{m_ctx}](auto&, auto&) {
if (auto ctx = ptr.lock()) if (auto ctx = ptr.lock())
ub_process(ctx.get()); ub_process(ctx.get());
}); });
@ -458,7 +459,6 @@ namespace llarp::dns
return true; return true;
} }
} }
// leak bare pointer and try to do the request
const auto& q = query.questions[0]; const auto& q = query.questions[0];
if (auto err = ub_resolve_async( if (auto err = ub_resolve_async(
m_ctx.get(), m_ctx.get(),
@ -469,12 +469,14 @@ namespace llarp::dns
&Resolver::Callback, &Resolver::Callback,
nullptr)) nullptr))
{ {
// take back ownership on fail
log::warning( log::warning(
logcat, "failed to send upstream query with libunbound: {}", ub_strerror(err)); logcat, "failed to send upstream query with libunbound: {}", ub_strerror(err));
tmp->Cancel(); tmp->Cancel();
} else { }
(void) tmp.release(); else
{
// Leak the bare pointer we gave to unbound; we'll recapture it in Callback
(void)tmp.release();
} }
return true; return true;
} }
@ -504,10 +506,7 @@ namespace llarp::dns
std::vector<std::weak_ptr<Resolver_Base>> std::vector<std::weak_ptr<Resolver_Base>>
Server::GetAllResolvers() const Server::GetAllResolvers() const
{ {
std::vector<std::weak_ptr<Resolver_Base>> all; return {m_Resolvers.begin(), m_Resolvers.end()};
for (const auto& res : m_Resolvers)
all.push_back(res);
return all;
} }
void void

Loading…
Cancel
Save