allow lns subdomains

pull/1351/head
Jeff 4 years ago
parent a035dbdb9a
commit 75ef28531e

@ -367,6 +367,13 @@ namespace llarp
return false;
}
std::string qname = msg.questions[0].Name();
const auto nameparts = split(qname, ".");
std::string lnsName;
if (nameparts.size() >= 2 and ends_with(qname, ".loki"))
{
lnsName = nameparts[nameparts.size() - 2];
lnsName += ".loki"sv;
}
if (msg.questions[0].qtype == dns::qTypeMX)
{
@ -470,24 +477,24 @@ namespace llarp
addr.as_array(), std::make_shared<dns::Message>(msg), isV6);
}
}
else if (ends_with(qname, ".loki") and service::NameIsValid(qname))
else if (service::NameIsValid(lnsName))
{
return LookupNameAsync(
qname,
lnsName,
[msg = std::make_shared<dns::Message>(msg),
name = Name(),
qname,
lnsName,
isV6,
reply,
ReplyToLokiDNSWhenReady](auto maybe) {
if (not maybe.has_value())
{
LogWarn(name, " lns name ", qname, " not resolved");
LogWarn(name, " lns name ", lnsName, " not resolved");
msg->AddNXReply();
reply(*msg);
return;
}
LogInfo(name, " ", qname, " resolved to ", maybe->ToString());
LogInfo(name, " ", lnsName, " resolved to ", maybe->ToString());
msg->AddCNAMEReply(maybe->ToString());
ReplyToLokiDNSWhenReady(*maybe, msg, isV6);
});

Loading…
Cancel
Save