From 457b634d09e53ecb9cdd1b3b14c62ba5c2b95201 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 2 Oct 2024 18:21:33 +0000 Subject: [PATCH] Allow a `DNSResolverMessageHandler` to set `dns_resolver` feature A `DNSResolverMessageHandler` which handles resolution requests should want the `NodeFeatures` included in the node's `node_announcement` to include `dns_resolver` to indicate to the world that it provides that service. Here we enable this by requesting extra feature flags from the `DNSResolverMessageHandler` in the features `OnionMessenger`, in turn, provides to `PeerManager` (which builds the `node_announcement`). --- lightning/src/onion_message/dns_resolution.rs | 9 +++++++++ lightning/src/onion_message/messenger.rs | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lightning/src/onion_message/dns_resolution.rs b/lightning/src/onion_message/dns_resolution.rs index af133aa7a..bbf8caa4f 100644 --- a/lightning/src/onion_message/dns_resolution.rs +++ b/lightning/src/onion_message/dns_resolution.rs @@ -34,6 +34,8 @@ use dnssec_prover::validation::verify_rr_stream; use dnssec_prover::rr::Name; +use lightning_types::features::NodeFeatures; + use crate::blinded_path::message::DNSResolverContext; use crate::io; #[cfg(feature = "dnssec")] @@ -67,6 +69,13 @@ pub trait DNSResolverMessageHandler { /// With this, we should be able to validate the DNS record we requested. fn handle_dnssec_proof(&self, message: DNSSECProof, context: DNSResolverContext); + /// Gets the node feature flags which this handler itself supports. Useful for setting the + /// `dns_resolver` flag if this handler supports returning [`DNSSECProof`] messages in response + /// to [`DNSSECQuery`] messages. + fn provided_node_features(&self) -> NodeFeatures { + NodeFeatures::empty() + } + /// Release any [`DNSResolverMessage`]s that need to be sent. fn release_pending_messages(&self) -> Vec<(DNSResolverMessage, MessageSendInstructions)> { vec![] diff --git a/lightning/src/onion_message/messenger.rs b/lightning/src/onion_message/messenger.rs index c53184691..0d7243193 100644 --- a/lightning/src/onion_message/messenger.rs +++ b/lightning/src/onion_message/messenger.rs @@ -1778,7 +1778,7 @@ where fn provided_node_features(&self) -> NodeFeatures { let mut features = NodeFeatures::empty(); features.set_onion_messages_optional(); - features + features | self.dns_resolver_handler.provided_node_features() } fn provided_init_features(&self, _their_node_id: PublicKey) -> InitFeatures { -- 2.39.5