@@ -593,6 +593,8 @@ pub enum Bolt11PaymentError {
593593 /// [`Bolt11Invoice`]: lightning_invoice::Bolt11Invoice
594594 /// [`ChannelManager::pay_for_bolt11_invoice`]: crate::ln::channelmanager::ChannelManager::pay_for_bolt11_invoice
595595 InvalidAmount ,
596+ /// An invalid or incompatible invoice was provided to [`ChannelManager::pay_for_bolt11_invoice`].
597+ InvalidInvoice ,
596598 /// The invoice was valid for the corresponding [`PaymentId`], but sending the payment failed.
597599 SendingFailed ( RetryableSendFailure ) ,
598600}
@@ -604,6 +606,8 @@ pub enum Bolt12PaymentError {
604606 UnexpectedInvoice ,
605607 /// Payment for an invoice with the corresponding [`PaymentId`] was already initiated.
606608 DuplicateInvoice ,
609+ /// An invalid or incompatible invoice was provided to [`ChannelManager::pay_for_bolt12_invoice`].
610+ InvalidInvoice ,
607611 /// The invoice was valid for the corresponding [`PaymentId`], but required unknown features.
608612 UnknownRequiredFeatures ,
609613 /// The invoice was valid for the corresponding [`PaymentId`], but sending the payment failed.
@@ -902,6 +906,7 @@ impl OutboundPayments {
902906 recipient_onion. payment_metadata = invoice. payment_metadata ( ) . map ( |v| v. clone ( ) ) ;
903907
904908 let payment_params = PaymentParameters :: from_bolt11_invoice ( invoice)
909+ . map_err ( |_| Bolt11PaymentError :: InvalidInvoice ) ?
905910 . with_user_config_ignoring_fee_limit ( route_params_config) ;
906911
907912 let mut route_params = RouteParameters :: from_payment_params_and_value ( payment_params, amount) ;
@@ -949,6 +954,7 @@ impl OutboundPayments {
949954
950955 let mut route_params = RouteParameters :: from_payment_params_and_value (
951956 PaymentParameters :: from_bolt12_invoice ( & invoice)
957+ . map_err ( |_| Bolt12PaymentError :: InvalidInvoice ) ?
952958 . with_user_config_ignoring_fee_limit ( params_config) , invoice. amount_msats ( )
953959 ) ;
954960 if let Some ( max_fee_msat) = params_config. max_total_routing_fee_msat {
@@ -1127,6 +1133,7 @@ impl OutboundPayments {
11271133 let keysend_preimage = PaymentPreimage ( entropy_source. get_secure_random_bytes ( ) ) ;
11281134 let payment_hash = PaymentHash ( Sha256 :: hash ( & keysend_preimage. 0 ) . to_byte_array ( ) ) ;
11291135 let pay_params = PaymentParameters :: from_static_invoice ( invoice)
1136+ . map_err ( |_| Bolt12PaymentError :: InvalidInvoice ) ?
11301137 . with_user_config_ignoring_fee_limit ( * route_params_config) ;
11311138 let mut route_params = RouteParameters :: from_payment_params_and_value ( pay_params, amount_msat) ;
11321139 route_params. max_total_routing_fee_msat = route_params_config. max_total_routing_fee_msat ;
@@ -3034,7 +3041,7 @@ mod tests {
30343041 assert ! ( outbound_payments. has_pending_payments( ) ) ;
30353042
30363043 let route_params = RouteParameters :: from_payment_params_and_value (
3037- PaymentParameters :: from_bolt12_invoice ( & invoice) ,
3044+ PaymentParameters :: from_bolt12_invoice ( & invoice) . unwrap ( ) ,
30383045 invoice. amount_msats ( ) ,
30393046 ) ;
30403047 router. expect_find_route ( route_params, Err ( "" ) ) ;
@@ -3086,7 +3093,7 @@ mod tests {
30863093 . sign ( recipient_sign) . unwrap ( ) ;
30873094
30883095 let route_params = RouteParameters {
3089- payment_params : PaymentParameters :: from_bolt12_invoice ( & invoice) ,
3096+ payment_params : PaymentParameters :: from_bolt12_invoice ( & invoice) . unwrap ( ) ,
30903097 final_value_msat : invoice. amount_msats ( ) ,
30913098 max_total_routing_fee_msat : Some ( 1234 ) ,
30923099 } ;
0 commit comments