|
|
|
@ -30,11 +30,6 @@ namespace llarp
|
|
|
|
|
{
|
|
|
|
|
m_Resolvers.clear();
|
|
|
|
|
m_Resolvers = resolvers;
|
|
|
|
|
if(m_Resolvers.size() == 0)
|
|
|
|
|
{
|
|
|
|
|
llarp::LogError("no upstream dns provide specified");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
llarp::Addr any("0.0.0.0", 0);
|
|
|
|
|
return llarp_ev_add_udp(m_Loop, &m_Server, addr) == 0
|
|
|
|
|
&& llarp_ev_add_udp(m_Loop, &m_Client, any) == 0;
|
|
|
|
@ -57,10 +52,8 @@ namespace llarp
|
|
|
|
|
llarp::Addr
|
|
|
|
|
Proxy::PickRandomResolver() const
|
|
|
|
|
{
|
|
|
|
|
size_t sz = m_Resolvers.size();
|
|
|
|
|
if(sz == 0)
|
|
|
|
|
return llarp::Addr("8.8.8.8", 53);
|
|
|
|
|
if(sz == 1)
|
|
|
|
|
const size_t sz = m_Resolvers.size();
|
|
|
|
|
if(sz <= 1)
|
|
|
|
|
return m_Resolvers[0];
|
|
|
|
|
auto itr = m_Resolvers.begin();
|
|
|
|
|
std::advance(itr, llarp::randint() % sz);
|
|
|
|
@ -140,6 +133,13 @@ namespace llarp
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else if(m_Resolvers.size() == 0)
|
|
|
|
|
{
|
|
|
|
|
// no upstream resolvers
|
|
|
|
|
// let's serv fail it
|
|
|
|
|
msg.AddServFail();
|
|
|
|
|
SendMessageTo(from, msg);
|
|
|
|
|
}
|
|
|
|
|
else if(itr == m_Forwarded.end())
|
|
|
|
|
{
|
|
|
|
|
// new forwarded query
|
|
|
|
|