Skip to content

Commit

Permalink
Allow a DNSResolverMessageHandler to set dns_resolver feature
Browse files Browse the repository at this point in the history
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`).
  • Loading branch information
TheBlueMatt committed Oct 2, 2024
1 parent 1abbe2a commit 457b634
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
9 changes: 9 additions & 0 deletions lightning/src/onion_message/dns_resolution.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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")]
Expand Down Expand Up @@ -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![]
Expand Down
2 changes: 1 addition & 1 deletion lightning/src/onion_message/messenger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 457b634

Please sign in to comment.