@@ -52,7 +52,7 @@ use ln::onion_utils;
52
52
use ln:: msgs:: { ChannelMessageHandler , DecodeError , LightningError , OptionalField } ;
53
53
use chain:: keysinterface:: { Sign , KeysInterface , KeysManager , InMemorySigner } ;
54
54
use util:: config:: UserConfig ;
55
- use util:: events:: { EventHandler , EventsProvider , MessageSendEvent , MessageSendEventsProvider , ClosureDescriptor } ;
55
+ use util:: events:: { EventHandler , EventsProvider , MessageSendEvent , MessageSendEventsProvider , ClosureReason } ;
56
56
use util:: { byte_utils, events} ;
57
57
use util:: ser:: { Readable , ReadableArgs , MaybeReadable , Writeable , Writer } ;
58
58
use util:: chacha20:: { ChaCha20 , ChaChaReader } ;
@@ -837,7 +837,7 @@ macro_rules! handle_error {
837
837
} ) ;
838
838
}
839
839
if let Some ( channel_id) = chan_id {
840
- $self. pending_events. lock( ) . unwrap( ) . push( events:: Event :: ChannelClosed { channel_id, err: ClosureDescriptor :: ProcessingError { err: err. err. clone( ) } } ) ;
840
+ $self. pending_events. lock( ) . unwrap( ) . push( events:: Event :: ChannelClosed { channel_id, err: ClosureReason :: ProcessingError { err: err. err. clone( ) } } ) ;
841
841
}
842
842
}
843
843
@@ -1460,6 +1460,16 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1460
1460
if let Some ( short_id) = chan. get ( ) . get_short_channel_id ( ) {
1461
1461
channel_state. short_to_id . remove ( & short_id) ;
1462
1462
}
1463
+ let mut pending_events_lock = self . pending_events . lock ( ) . unwrap ( ) ;
1464
+ if peer_node_id. is_some ( ) {
1465
+ if let Some ( peer_msg) = peer_msg {
1466
+ pending_events_lock. push ( events:: Event :: ChannelClosed { channel_id : * channel_id, err : ClosureReason :: CounterpartyForceClosed { peer_msg : Some ( peer_msg. to_string ( ) ) } } ) ;
1467
+ } else {
1468
+ pending_events_lock. push ( events:: Event :: ChannelClosed { channel_id : * channel_id, err : ClosureReason :: CounterpartyForceClosed { peer_msg : None } } ) ;
1469
+ }
1470
+ } else {
1471
+ pending_events_lock. push ( events:: Event :: ChannelClosed { channel_id : * channel_id, err : ClosureReason :: HolderForceClosed } ) ;
1472
+ }
1463
1473
chan. remove_entry ( ) . 1
1464
1474
} else {
1465
1475
return Err ( APIError :: ChannelUnavailable { err : "No such channel" . to_owned ( ) } ) ;
@@ -1473,7 +1483,6 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1473
1483
msg : update
1474
1484
} ) ;
1475
1485
}
1476
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : * channel_id, err : ClosureDescriptor :: ForceClosed { peer_msg : if peer_msg. is_some ( ) { Some ( peer_msg. unwrap ( ) . clone ( ) ) } else { None } } } ) ;
1477
1486
1478
1487
Ok ( chan. get_counterparty_node_id ( ) )
1479
1488
}
@@ -3557,7 +3566,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3557
3566
} ) ;
3558
3567
}
3559
3568
//TODO: split between CounterpartyInitiated/LocallyInitiated
3560
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : msg. channel_id , err : ClosureDescriptor :: CooperativeClosure } ) ;
3569
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : msg. channel_id , err : ClosureReason :: CooperativeClosure } ) ;
3561
3570
}
3562
3571
Ok ( ( ) )
3563
3572
}
@@ -3969,7 +3978,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3969
3978
msg : update
3970
3979
} ) ;
3971
3980
}
3972
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureDescriptor :: CommitmentTxBroadcasted } ) ;
3981
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureReason :: CommitmentTxBroadcasted } ) ;
3973
3982
pending_msg_events. push ( events:: MessageSendEvent :: HandleError {
3974
3983
node_id : chan. get_counterparty_node_id ( ) ,
3975
3984
action : msgs:: ErrorAction :: SendErrorMessage {
@@ -4505,7 +4514,7 @@ where
4505
4514
msg : update
4506
4515
} ) ;
4507
4516
}
4508
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : channel. channel_id ( ) , err : ClosureDescriptor :: CommitmentTxBroadcasted } ) ;
4517
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : channel. channel_id ( ) , err : ClosureReason :: CommitmentTxBroadcasted } ) ;
4509
4518
pending_msg_events. push ( events:: MessageSendEvent :: HandleError {
4510
4519
node_id : channel. get_counterparty_node_id ( ) ,
4511
4520
action : msgs:: ErrorAction :: SendErrorMessage { msg : e } ,
@@ -4696,7 +4705,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
4696
4705
msg : update
4697
4706
} ) ;
4698
4707
}
4699
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureDescriptor :: DisconnectedPeer } ) ;
4708
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureReason :: DisconnectedPeer } ) ;
4700
4709
false
4701
4710
} else {
4702
4711
true
@@ -4711,7 +4720,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
4711
4720
if let Some ( short_id) = chan. get_short_channel_id ( ) {
4712
4721
short_to_id. remove ( & short_id) ;
4713
4722
}
4714
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureDescriptor :: DisconnectedPeer } ) ;
4723
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureReason :: DisconnectedPeer } ) ;
4715
4724
return false ;
4716
4725
} else {
4717
4726
no_channels_remain = false ;
@@ -4807,7 +4816,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
4807
4816
}
4808
4817
} else {
4809
4818
// Untrusted messages from peer, we throw away the error if id points to a non-existent channel
4810
- let _ = self . force_close_channel_with_peer ( & msg. channel_id , Some ( counterparty_node_id) , None ) ;
4819
+ let _ = self . force_close_channel_with_peer ( & msg. channel_id , Some ( counterparty_node_id) , Some ( & msg . data ) ) ;
4811
4820
}
4812
4821
}
4813
4822
}
0 commit comments