9
9
//!
10
10
//! [BOLT 12]: https://github.com/lightning/bolts/blob/master/12-offer-encoding.md
11
11
12
- use crate :: config:: LDK_PAYMENT_RETRY_TIMEOUT ;
12
+ use crate :: config:: { Config , LDK_PAYMENT_RETRY_TIMEOUT } ;
13
13
use crate :: error:: Error ;
14
14
use crate :: ffi:: { maybe_deref, maybe_wrap} ;
15
15
use crate :: logger:: { log_error, log_info, LdkLogger , Logger } ;
@@ -53,15 +53,16 @@ pub struct Bolt12Payment {
53
53
channel_manager : Arc < ChannelManager > ,
54
54
payment_store : Arc < PaymentStore > ,
55
55
logger : Arc < Logger > ,
56
+ config : Arc < Config > ,
56
57
}
57
58
58
59
impl Bolt12Payment {
59
60
pub ( crate ) fn new (
60
61
runtime : Arc < RwLock < Option < Arc < tokio:: runtime:: Runtime > > > > ,
61
62
channel_manager : Arc < ChannelManager > , payment_store : Arc < PaymentStore > ,
62
- logger : Arc < Logger > ,
63
+ logger : Arc < Logger > , config : Arc < Config > ,
63
64
) -> Self {
64
- Self { runtime, channel_manager, payment_store, logger }
65
+ Self { runtime, channel_manager, payment_store, logger, config }
65
66
}
66
67
67
68
/// Send a payment given an offer.
@@ -278,11 +279,9 @@ impl Bolt12Payment {
278
279
/// This can be used to pay so-called "zero-amount" offers, i.e., an offer that leaves the
279
280
/// amount paid to be determined by the user.
280
281
///
281
- /// `dns_resolvers` should be a list of node Destinations that are configured for dns resolution (as outlined in bLIP 32).
282
- /// These nodes can be found by running a search through the `NetworkGraph` to find nodes that announce the
283
- /// `dns_resolver` feature flag.
282
+ /// If `dns_resolvers` in Config is set to `None`, this operation will fail.
284
283
pub fn send_to_human_readable_name (
285
- & self , name : & str , amount_msat : u64 , dns_resolvers : Vec < Destination > ,
284
+ & self , name : & str , amount_msat : u64 ,
286
285
) -> Result < PaymentId , Error > {
287
286
let rt_lock = self . runtime . read ( ) . unwrap ( ) ;
288
287
if rt_lock. is_none ( ) {
@@ -297,6 +296,11 @@ impl Bolt12Payment {
297
296
let retry_strategy = Retry :: Timeout ( LDK_PAYMENT_RETRY_TIMEOUT ) ;
298
297
let max_total_routing_fee_msat = None ;
299
298
299
+ let dns_resolvers = match & self . config . dns_resolvers {
300
+ Some ( dns_resolvers) => Ok ( dns_resolvers. clone ( ) ) ,
301
+ None => Err ( Error :: DnsResolversNotConfigured ) ,
302
+ } ?;
303
+
300
304
match self . channel_manager . pay_for_offer_from_human_readable_name (
301
305
hrn. clone ( ) ,
302
306
amount_msat,
0 commit comments