diff --git a/llarp/handlers/tun.cpp b/llarp/handlers/tun.cpp index ac465ad9f..1db2d8d10 100644 --- a/llarp/handlers/tun.cpp +++ b/llarp/handlers/tun.cpp @@ -501,7 +501,10 @@ namespace llarp LookupNameAsync(lnsName, [msg, lnsName, reply](auto maybe) mutable { if (maybe.has_value()) { - std::visit([&](auto&& value) { msg.AddMXReply(value.ToString(), 1); }, *maybe); + if (auto* addr = std::get_if(&*maybe)) + { + msg.AddMXReply(addr->ToString(), 1); + } } else { diff --git a/llarp/rpc/rpc_server.cpp b/llarp/rpc/rpc_server.cpp index dca395143..14c3fce82 100644 --- a/llarp/rpc/rpc_server.cpp +++ b/llarp/rpc/rpc_server.cpp @@ -294,15 +294,6 @@ namespace llarp::rpc reply(CreateJSONError("we could not find an exit with that name")); return; } - std::visit( - [&](auto&& value) { - if (value.IsZero()) - { - reply(CreateJSONError("lokinet exit does not exist")); - return; - } - }, - *maybe); if (auto ptr = std::get_if(&*maybe)) { mapExit(*ptr); diff --git a/llarp/service/endpoint.cpp b/llarp/service/endpoint.cpp index 1d9cf6ca7..ea072adc7 100644 --- a/llarp/service/endpoint.cpp +++ b/llarp/service/endpoint.cpp @@ -827,6 +827,10 @@ namespace llarp } auto maybeInvalidateCache = [handler, &cache, name](auto result) { + if (result and result->IsZero()) + { + result = std::nullopt; + } if (result) { cache.Put(name, *result);