use default endpoint

pull/35/head
Jeff 6 years ago
parent 429cd3b63c
commit 8c591ceb96

@ -27,8 +27,8 @@ namespace llarp
llarp::service::Endpoint *
getFirstEndpoint();
huint32_t
FindBestAddressFor(const llarp::service::Address &);
bool
FindBestAddressFor(const llarp::service::Address &, huint32_t &);
/// DRY refactor
llarp::handlers::TunEndpoint *

@ -96,8 +96,13 @@ llarp_dotlokilookup_checkQuery(void *u, uint64_t orig, uint64_t left)
*/
llarp::service::Context *routerHiddenServiceContext =
(llarp::service::Context *)dll->user;
llarp::huint32_t foundAddr =
routerHiddenServiceContext->FindBestAddressFor(addr);
llarp::huint32_t foundAddr;
if(!routerHiddenServiceContext->FindBestAddressFor(addr, foundAddr))
{
write404_dnss_response(qr->from, qr->request);
delete qr;
return;
}
// make a dnsd_query_hook_response for the cache
dnsd_query_hook_response *response = new dnsd_query_hook_response;

@ -98,19 +98,27 @@ namespace llarp
return &tunEndpoint->tunif;
}
huint32_t
Context::FindBestAddressFor(const llarp::service::Address &addr)
bool
Context::FindBestAddressFor(const llarp::service::Address &addr,
huint32_t &ip)
{
auto itr = m_Endpoints.begin();
while(itr != m_Endpoints.end())
{
if(itr->second->HasAddress(addr))
{
return itr->second->ObtainIPForAddr(addr);
ip = itr->second->ObtainIPForAddr(addr);
return true;
}
++itr;
}
return getFirstEndpoint()->ObtainIPForAddr(addr);
itr = m_Endpoints.find("default");
if(itr != m_Endpoints.end())
{
ip = itr->second->ObtainIPForAddr(addr);
return true;
}
return false;
}
bool

Loading…
Cancel
Save