@@ -53,7 +53,7 @@ use ln::onion_utils;
53
53
use ln:: msgs:: { ChannelMessageHandler , DecodeError , LightningError , OptionalField } ;
54
54
use chain:: keysinterface:: { Sign , KeysInterface , KeysManager , InMemorySigner } ;
55
55
use util:: config:: UserConfig ;
56
- use util:: events:: { EventHandler , EventsProvider , MessageSendEvent , MessageSendEventsProvider , ClosureDescriptor } ;
56
+ use util:: events:: { EventHandler , EventsProvider , MessageSendEvent , MessageSendEventsProvider , ClosureReason } ;
57
57
use util:: { byte_utils, events} ;
58
58
use util:: ser:: { Readable , ReadableArgs , MaybeReadable , Writeable , Writer } ;
59
59
use util:: chacha20:: { ChaCha20 , ChaChaReader } ;
@@ -804,7 +804,7 @@ macro_rules! handle_error {
804
804
} ) ;
805
805
}
806
806
if let Some ( channel_id) = chan_id {
807
- $self. pending_events. lock( ) . unwrap( ) . push( events:: Event :: ChannelClosed { channel_id, err: ClosureDescriptor :: ProcessingError { err: err. err. clone( ) } } ) ;
807
+ $self. pending_events. lock( ) . unwrap( ) . push( events:: Event :: ChannelClosed { channel_id, err: ClosureReason :: ProcessingError { err: err. err. clone( ) } } ) ;
808
808
}
809
809
}
810
810
@@ -1427,6 +1427,16 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1427
1427
if let Some ( short_id) = chan. get ( ) . get_short_channel_id ( ) {
1428
1428
channel_state. short_to_id . remove ( & short_id) ;
1429
1429
}
1430
+ let mut pending_events_lock = self . pending_events . lock ( ) . unwrap ( ) ;
1431
+ if peer_node_id. is_some ( ) {
1432
+ if let Some ( peer_msg) = peer_msg {
1433
+ pending_events_lock. push ( events:: Event :: ChannelClosed { channel_id : * channel_id, err : ClosureReason :: CounterpartyForceClosed { peer_msg : Some ( peer_msg. to_string ( ) ) } } ) ;
1434
+ } else {
1435
+ pending_events_lock. push ( events:: Event :: ChannelClosed { channel_id : * channel_id, err : ClosureReason :: CounterpartyForceClosed { peer_msg : None } } ) ;
1436
+ }
1437
+ } else {
1438
+ pending_events_lock. push ( events:: Event :: ChannelClosed { channel_id : * channel_id, err : ClosureReason :: HolderForceClosed } ) ;
1439
+ }
1430
1440
chan. remove_entry ( ) . 1
1431
1441
} else {
1432
1442
return Err ( APIError :: ChannelUnavailable { err : "No such channel" . to_owned ( ) } ) ;
@@ -1440,7 +1450,6 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
1440
1450
msg : update
1441
1451
} ) ;
1442
1452
}
1443
- 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 } } } ) ;
1444
1453
1445
1454
Ok ( chan. get_counterparty_node_id ( ) )
1446
1455
}
@@ -3507,7 +3516,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3507
3516
} ) ;
3508
3517
}
3509
3518
//TODO: split between CounterpartyInitiated/LocallyInitiated
3510
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : msg. channel_id , err : ClosureDescriptor :: CooperativeClosure } ) ;
3519
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : msg. channel_id , err : ClosureReason :: CooperativeClosure } ) ;
3511
3520
}
3512
3521
Ok ( ( ) )
3513
3522
}
@@ -3918,7 +3927,7 @@ impl<Signer: Sign, M: Deref, T: Deref, K: Deref, F: Deref, L: Deref> ChannelMana
3918
3927
msg : update
3919
3928
} ) ;
3920
3929
}
3921
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureDescriptor :: CommitmentTxBroadcasted } ) ;
3930
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureReason :: CommitmentTxBroadcasted } ) ;
3922
3931
pending_msg_events. push ( events:: MessageSendEvent :: HandleError {
3923
3932
node_id : chan. get_counterparty_node_id ( ) ,
3924
3933
action : msgs:: ErrorAction :: SendErrorMessage {
@@ -4454,7 +4463,7 @@ where
4454
4463
msg : update
4455
4464
} ) ;
4456
4465
}
4457
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : channel. channel_id ( ) , err : ClosureDescriptor :: CommitmentTxBroadcasted } ) ;
4466
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : channel. channel_id ( ) , err : ClosureReason :: CommitmentTxBroadcasted } ) ;
4458
4467
pending_msg_events. push ( events:: MessageSendEvent :: HandleError {
4459
4468
node_id : channel. get_counterparty_node_id ( ) ,
4460
4469
action : msgs:: ErrorAction :: SendErrorMessage { msg : e } ,
@@ -4645,7 +4654,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
4645
4654
msg : update
4646
4655
} ) ;
4647
4656
}
4648
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureDescriptor :: DisconnectedPeer } ) ;
4657
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureReason :: DisconnectedPeer } ) ;
4649
4658
false
4650
4659
} else {
4651
4660
true
@@ -4660,7 +4669,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
4660
4669
if let Some ( short_id) = chan. get_short_channel_id ( ) {
4661
4670
short_to_id. remove ( & short_id) ;
4662
4671
}
4663
- self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureDescriptor :: DisconnectedPeer } ) ;
4672
+ self . pending_events . lock ( ) . unwrap ( ) . push ( events:: Event :: ChannelClosed { channel_id : chan. channel_id ( ) , err : ClosureReason :: DisconnectedPeer } ) ;
4664
4673
return false ;
4665
4674
} else {
4666
4675
no_channels_remain = false ;
@@ -4757,7 +4766,7 @@ impl<Signer: Sign, M: Deref , T: Deref , K: Deref , F: Deref , L: Deref >
4757
4766
}
4758
4767
} else {
4759
4768
// Untrusted messages from peer, we throw away the error if id points to a non-existent channel
4760
- let _ = self . force_close_channel_with_peer ( & msg. channel_id , Some ( counterparty_node_id) , None ) ;
4769
+ let _ = self . force_close_channel_with_peer ( & msg. channel_id , Some ( counterparty_node_id) , Some ( & msg . data ) ) ;
4761
4770
}
4762
4771
}
4763
4772
}
0 commit comments