@@ -14,8 +14,8 @@ use crate::io::{
14
14
use crate :: logger:: { log_error, log_info, Logger } ;
15
15
16
16
use 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 } ;
19
19
use lightning:: impl_writeable_tlv_based_enum;
20
20
use lightning:: ln:: { ChannelId , PaymentHash } ;
21
21
use lightning:: routing:: gossip:: NodeId ;
@@ -52,6 +52,10 @@ pub enum Event {
52
52
PaymentFailed {
53
53
/// The hash of the payment.
54
54
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 > ,
55
59
} ,
56
60
/// A payment has been received.
57
61
PaymentReceived {
@@ -81,7 +85,7 @@ pub enum Event {
81
85
user_channel_id : UserChannelId ,
82
86
/// The `node_id` of the channel counterparty.
83
87
///
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.
85
89
counterparty_node_id : Option < PublicKey > ,
86
90
} ,
87
91
/// A channel has been closed.
@@ -92,8 +96,10 @@ pub enum Event {
92
96
user_channel_id : UserChannelId ,
93
97
/// The `node_id` of the channel counterparty.
94
98
///
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.
96
100
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 > ,
97
103
} ,
98
104
}
99
105
@@ -103,6 +109,7 @@ impl_writeable_tlv_based_enum!(Event,
103
109
} ,
104
110
( 1 , PaymentFailed ) => {
105
111
( 0 , payment_hash, required) ,
112
+ ( 1 , reason, option) ,
106
113
} ,
107
114
( 2 , PaymentReceived ) => {
108
115
( 0 , payment_hash, required) ,
@@ -124,6 +131,7 @@ impl_writeable_tlv_based_enum!(Event,
124
131
( 0 , channel_id, required) ,
125
132
( 1 , counterparty_node_id, option) ,
126
133
( 2 , user_channel_id, required) ,
134
+ ( 3 , reason, upgradable_option) ,
127
135
} ;
128
136
) ;
129
137
@@ -609,11 +617,12 @@ where
609
617
panic ! ( "Failed to push to event queue" ) ;
610
618
} ) ;
611
619
}
612
- LdkEvent :: PaymentFailed { payment_hash, .. } => {
620
+ LdkEvent :: PaymentFailed { payment_hash, reason , .. } => {
613
621
log_info ! (
614
622
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
617
626
) ;
618
627
619
628
let update = PaymentDetailsUpdate {
@@ -624,12 +633,12 @@ where
624
633
log_error ! ( self . logger, "Failed to access payment store: {}" , e) ;
625
634
panic ! ( "Failed to access payment store" ) ;
626
635
} ) ;
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| {
629
639
log_error ! ( self . logger, "Failed to push to event queue: {}" , e) ;
630
640
panic ! ( "Failed to push to event queue" ) ;
631
- } ,
632
- ) ;
641
+ } ) ;
633
642
}
634
643
635
644
LdkEvent :: PaymentPathSuccessful { .. } => { }
@@ -846,12 +855,13 @@ where
846
855
counterparty_node_id,
847
856
..
848
857
} => {
849
- log_info ! ( self . logger, "Channel {} closed due to: {:? }" , channel_id, reason) ;
858
+ log_info ! ( self . logger, "Channel {} closed due to: {}" , channel_id, reason) ;
850
859
self . event_queue
851
860
. add_event ( Event :: ChannelClosed {
852
861
channel_id,
853
862
user_channel_id : UserChannelId ( user_channel_id) ,
854
863
counterparty_node_id,
864
+ reason : Some ( reason) ,
855
865
} )
856
866
. unwrap_or_else ( |e| {
857
867
log_error ! ( self . logger, "Failed to push to event queue: {}" , e) ;
0 commit comments