@@ -14,8 +14,8 @@ use crate::io::{
1414use crate :: logger:: { log_error, log_info, Logger } ;
1515
1616use lightning:: chain:: chaininterface:: ConfirmationTarget ;
17- use lightning:: events:: Event as LdkEvent ;
18- use lightning:: events:: PaymentPurpose ;
17+ use lightning:: events:: { ClosureReason , PaymentPurpose } ;
18+ use lightning:: events:: { Event as LdkEvent , PaymentFailureReason } ;
1919use lightning:: impl_writeable_tlv_based_enum;
2020use lightning:: ln:: { ChannelId , PaymentHash } ;
2121use lightning:: routing:: gossip:: NodeId ;
@@ -52,6 +52,10 @@ pub enum Event {
5252 PaymentFailed {
5353 /// The hash of the payment.
5454 payment_hash : PaymentHash ,
55+ /// The reason why the payment failed.
56+ ///
57+ /// This will be `None` for events serialized by LDK Node v0.2.1 and prior.
58+ reason : Option < PaymentFailureReason > ,
5559 } ,
5660 /// A payment has been received.
5761 PaymentReceived {
@@ -81,7 +85,7 @@ pub enum Event {
8185 user_channel_id : UserChannelId ,
8286 /// The `node_id` of the channel counterparty.
8387 ///
84- /// This will be `None` for events serialized by LDK Node XXX TODO and prior.
88+ /// This will be `None` for events serialized by LDK Node v0.1.0 and prior.
8589 counterparty_node_id : Option < PublicKey > ,
8690 } ,
8791 /// A channel has been closed.
@@ -92,8 +96,10 @@ pub enum Event {
9296 user_channel_id : UserChannelId ,
9397 /// The `node_id` of the channel counterparty.
9498 ///
95- /// This will be `None` for events serialized by LDK Node XXX TODO and prior.
99+ /// This will be `None` for events serialized by LDK Node v0.1.0 and prior.
96100 counterparty_node_id : Option < PublicKey > ,
101+ /// This will be `None` for events serialized by LDK Node v0.2.1 and prior.
102+ reason : Option < ClosureReason > ,
97103 } ,
98104}
99105
@@ -103,6 +109,7 @@ impl_writeable_tlv_based_enum!(Event,
103109 } ,
104110 ( 1 , PaymentFailed ) => {
105111 ( 0 , payment_hash, required) ,
112+ ( 1 , reason, option) ,
106113 } ,
107114 ( 2 , PaymentReceived ) => {
108115 ( 0 , payment_hash, required) ,
@@ -124,6 +131,7 @@ impl_writeable_tlv_based_enum!(Event,
124131 ( 0 , channel_id, required) ,
125132 ( 1 , counterparty_node_id, option) ,
126133 ( 2 , user_channel_id, required) ,
134+ ( 3 , reason, upgradable_option) ,
127135 } ;
128136) ;
129137
@@ -609,11 +617,12 @@ where
609617 panic ! ( "Failed to push to event queue" ) ;
610618 } ) ;
611619 }
612- LdkEvent :: PaymentFailed { payment_hash, .. } => {
620+ LdkEvent :: PaymentFailed { payment_hash, reason , .. } => {
613621 log_info ! (
614622 self . logger,
615- "Failed to send payment to payment hash {:?}." ,
616- hex_utils:: to_string( & payment_hash. 0 )
623+ "Failed to send payment to payment hash {:?} due to {:?}." ,
624+ hex_utils:: to_string( & payment_hash. 0 ) ,
625+ reason
617626 ) ;
618627
619628 let update = PaymentDetailsUpdate {
@@ -624,12 +633,12 @@ where
624633 log_error ! ( self . logger, "Failed to access payment store: {}" , e) ;
625634 panic ! ( "Failed to access payment store" ) ;
626635 } ) ;
627- self . event_queue . add_event ( Event :: PaymentFailed { payment_hash } ) . unwrap_or_else (
628- |e| {
636+ self . event_queue
637+ . add_event ( Event :: PaymentFailed { payment_hash, reason } )
638+ . unwrap_or_else ( |e| {
629639 log_error ! ( self . logger, "Failed to push to event queue: {}" , e) ;
630640 panic ! ( "Failed to push to event queue" ) ;
631- } ,
632- ) ;
641+ } ) ;
633642 }
634643
635644 LdkEvent :: PaymentPathSuccessful { .. } => { }
@@ -846,12 +855,13 @@ where
846855 counterparty_node_id,
847856 ..
848857 } => {
849- log_info ! ( self . logger, "Channel {} closed due to: {:? }" , channel_id, reason) ;
858+ log_info ! ( self . logger, "Channel {} closed due to: {}" , channel_id, reason) ;
850859 self . event_queue
851860 . add_event ( Event :: ChannelClosed {
852861 channel_id,
853862 user_channel_id : UserChannelId ( user_channel_id) ,
854863 counterparty_node_id,
864+ reason : Some ( reason) ,
855865 } )
856866 . unwrap_or_else ( |e| {
857867 log_error ! ( self . logger, "Failed to push to event queue: {}" , e) ;
0 commit comments