@@ -74,7 +74,7 @@ use crate::offers::parse::Bolt12SemanticError;
7474use crate::offers::signer;
7575use crate::onion_message::async_payments::{AsyncPaymentsMessage, HeldHtlcAvailable, ReleaseHeldHtlc, AsyncPaymentsMessageHandler};
7676use crate::onion_message::dns_resolution::HumanReadableName;
77- use crate::onion_message::messenger::{Destination, MessageRouter, Responder, ResponseInstruction, MessageSendInstructions };
77+ use crate::onion_message::messenger::{DefaultMessageRouter, Destination, MessageRouter, MessageSendInstructions, Responder, ResponseInstruction };
7878use crate::onion_message::offers::OffersMessage;
7979use crate::sign::{EntropySource, NodeSigner, Recipient, SignerProvider};
8080use crate::sign::ecdsa::EcdsaChannelSigner;
@@ -90,13 +90,10 @@ use crate::util::errors::APIError;
9090use crate::offers::static_invoice::StaticInvoice;
9191
9292#[cfg(feature = "dnssec")]
93- use crate::blinded_path::message::DNSResolverContext;
94- #[cfg(feature = "dnssec")]
95- use crate::onion_message::dns_resolution::{DNSResolverMessage, DNSResolverMessageHandler, DNSSECQuery, DNSSECProof, OMNameResolver};
93+ use crate::onion_message::dns_resolution::{DNSResolverMessage, OMNameResolver};
9694
9795#[cfg(not(c_bindings))]
9896use {
99- crate::onion_message::messenger::DefaultMessageRouter,
10097 crate::routing::router::DefaultRouter,
10198 crate::routing::gossip::NetworkGraph,
10299 crate::routing::scoring::{ProbabilisticScorer, ProbabilisticScoringFeeParameters},
@@ -2440,14 +2437,6 @@ where
24402437 #[cfg(feature = "dnssec")]
24412438 pending_dns_onion_messages: Mutex<Vec<(DNSResolverMessage, MessageSendInstructions)>>,
24422439
2443- #[cfg(feature = "_test_utils")]
2444- /// In testing, it is useful be able to forge a name -> offer mapping so that we can pay an
2445- /// offer generated in the test.
2446- ///
2447- /// This allows for doing so, validating proofs as normal, but, if they pass, replacing the
2448- /// offer they resolve to to the given one.
2449- pub testing_dnssec_proof_offer_resolution_override: Mutex<HashMap<HumanReadableName, Offer>>,
2450-
24512440 #[cfg(test)]
24522441 pub(super) entropy_source: ES,
24532442 #[cfg(not(test))]
@@ -3382,9 +3371,6 @@ where
33823371 hrn_resolver: OMNameResolver::new(current_timestamp, params.best_block.height),
33833372 #[cfg(feature = "dnssec")]
33843373 pending_dns_onion_messages: Mutex::new(Vec::new()),
3385-
3386- #[cfg(feature = "_test_utils")]
3387- testing_dnssec_proof_offer_resolution_override: Mutex::new(new_hash_map()),
33883374 }
33893375 }
33903376
@@ -9596,6 +9582,17 @@ where
95969582 ) -> Result<(), Bolt12SemanticError> {
95979583 self.pay_for_offer_intern(offer, quantity, amount_msats, payer_note, payment_id, human_readable_name, create_pending_payment)
95989584 }
9585+
9586+ #[cfg(feature = "dnssec")]
9587+ fn amt_msats_for_payment_awaiting_offer(&self, payment_id: PaymentId) -> Result<u64, ()> {
9588+ self.pending_outbound_payments.amt_msats_for_payment_awaiting_offer(payment_id)
9589+ }
9590+ #[cfg(feature = "dnssec")]
9591+ fn received_offer(
9592+ &self, payment_id: PaymentId, retryable_invoice_request: Option<RetryableInvoiceRequest>,
9593+ ) -> Result<(), ()> {
9594+ self.pending_outbound_payments.received_offer(payment_id, retryable_invoice_request)
9595+ }
95999596}
96009597
96019598/// Defines the maximum number of [`OffersMessage`] including different reply paths to be sent
@@ -11350,70 +11347,6 @@ where
1135011347 }
1135111348}
1135211349
11353- #[cfg(feature = "dnssec")]
11354- impl<M: Deref, T: Deref, ES: Deref, NS: Deref, SP: Deref, F: Deref, R: Deref, MR: Deref, L: Deref>
11355- DNSResolverMessageHandler for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
11356- where
11357- M::Target: chain::Watch<<SP::Target as SignerProvider>::EcdsaSigner>,
11358- T::Target: BroadcasterInterface,
11359- ES::Target: EntropySource,
11360- NS::Target: NodeSigner,
11361- SP::Target: SignerProvider,
11362- F::Target: FeeEstimator,
11363- R::Target: Router,
11364- MR::Target: MessageRouter,
11365- L::Target: Logger,
11366- {
11367- fn handle_dnssec_query(
11368- &self, _message: DNSSECQuery, _responder: Option<Responder>,
11369- ) -> Option<(DNSResolverMessage, ResponseInstruction)> {
11370- None
11371- }
11372-
11373- fn handle_dnssec_proof(&self, message: DNSSECProof, context: DNSResolverContext) {
11374- let offer_opt = self.hrn_resolver.handle_dnssec_proof_for_offer(message, context);
11375- #[cfg_attr(not(feature = "_test_utils"), allow(unused_mut))]
11376- if let Some((completed_requests, mut offer)) = offer_opt {
11377- for (name, payment_id) in completed_requests {
11378- #[cfg(feature = "_test_utils")]
11379- if let Some(replacement_offer) = self.testing_dnssec_proof_offer_resolution_override.lock().unwrap().remove(&name) {
11380- // If we have multiple pending requests we may end up over-using the override
11381- // offer, but tests can deal with that.
11382- offer = replacement_offer;
11383- }
11384- if let Ok(amt_msats) = self.pending_outbound_payments.amt_msats_for_payment_awaiting_offer(payment_id) {
11385- let offer_pay_res =
11386- self.pay_for_offer_intern(&offer, None, Some(amt_msats), None, payment_id, Some(name),
11387- |invoice_request, nonce| {
11388- let retryable_invoice_request = RetryableInvoiceRequest {
11389- invoice_request: invoice_request.clone(),
11390- nonce,
11391- needs_retry: true,
11392- };
11393- self.pending_outbound_payments
11394- .received_offer(payment_id, Some(retryable_invoice_request))
11395- .map_err(|_| Bolt12SemanticError::DuplicatePaymentId)
11396- });
11397- if offer_pay_res.is_err() {
11398- // The offer we tried to pay is the canonical current offer for the name we
11399- // wanted to pay. If we can't pay it, there's no way to recover so fail the
11400- // payment.
11401- // Note that the PaymentFailureReason should be ignored for an
11402- // AwaitingInvoice payment.
11403- self.pending_outbound_payments.abandon_payment(
11404- payment_id, PaymentFailureReason::RouteNotFound, &self.pending_events,
11405- );
11406- }
11407- }
11408- }
11409- }
11410- }
11411-
11412- fn release_pending_messages(&self) -> Vec<(DNSResolverMessage, MessageSendInstructions)> {
11413- core::mem::take(&mut self.pending_dns_onion_messages.lock().unwrap())
11414- }
11415- }
11416-
1141711350impl<M: Deref, T: Deref, ES: Deref, NS: Deref, SP: Deref, F: Deref, R: Deref, MR: Deref, L: Deref>
1141811351NodeIdLookUp for ChannelManager<M, T, ES, NS, SP, F, R, MR, L>
1141911352where
@@ -13350,9 +13283,6 @@ where
1335013283 hrn_resolver: OMNameResolver::new(highest_seen_timestamp, best_block_height),
1335113284 #[cfg(feature = "dnssec")]
1335213285 pending_dns_onion_messages: Mutex::new(Vec::new()),
13353-
13354- #[cfg(feature = "_test_utils")]
13355- testing_dnssec_proof_offer_resolution_override: Mutex::new(new_hash_map()),
1335613286 };
1335713287
1335813288 let mut processed_claims: HashSet<Vec<MPPClaimHTLCSource>> = new_hash_set();
0 commit comments