@@ -1446,6 +1446,32 @@ impl ChannelManager {
1446
1446
Ok ( accept_msg)
1447
1447
}
1448
1448
1449
+ fn internal_accept_channel ( & self , their_node_id : & PublicKey , msg : & msgs:: AcceptChannel ) -> Result < ( ) , MsgHandleErrInternal > {
1450
+ let ( value, output_script, user_id) = {
1451
+ let mut channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
1452
+ match channel_state. by_id . get_mut ( & msg. temporary_channel_id ) {
1453
+ Some ( chan) => {
1454
+ if chan. get_their_node_id ( ) != * their_node_id {
1455
+ //TODO: see issue #153, need a consistent behavior on obnoxious behavior from random node
1456
+ return Err ( MsgHandleErrInternal :: send_err_msg_no_close ( "Got a message for a channel from the wrong node!" , msg. temporary_channel_id ) ) ;
1457
+ }
1458
+ chan. accept_channel ( & msg) . map_err ( |e| MsgHandleErrInternal :: from_maybe_close ( e) ) ?;
1459
+ ( chan. get_value_satoshis ( ) , chan. get_funding_redeemscript ( ) . to_v0_p2wsh ( ) , chan. get_user_id ( ) )
1460
+ } ,
1461
+ //TODO: same as above
1462
+ None => return Err ( MsgHandleErrInternal :: send_err_msg_no_close ( "Failed to find corresponding channel" , msg. temporary_channel_id ) )
1463
+ }
1464
+ } ;
1465
+ let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
1466
+ pending_events. push ( events:: Event :: FundingGenerationReady {
1467
+ temporary_channel_id : msg. temporary_channel_id ,
1468
+ channel_value_satoshis : value,
1469
+ output_script : output_script,
1470
+ user_channel_id : user_id,
1471
+ } ) ;
1472
+ Ok ( ( ) )
1473
+ }
1474
+
1449
1475
fn internal_announcement_signatures ( & self , their_node_id : & PublicKey , msg : & msgs:: AnnouncementSignatures ) -> Result < ( ) , MsgHandleErrInternal > {
1450
1476
let ( chan_announcement, chan_update) = {
1451
1477
let mut channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
@@ -1652,27 +1678,7 @@ impl ChannelMessageHandler for ChannelManager {
1652
1678
}
1653
1679
1654
1680
fn handle_accept_channel ( & self , their_node_id : & PublicKey , msg : & msgs:: AcceptChannel ) -> Result < ( ) , HandleError > {
1655
- let ( value, output_script, user_id) = {
1656
- let mut channel_state = self . channel_state . lock ( ) . unwrap ( ) ;
1657
- match channel_state. by_id . get_mut ( & msg. temporary_channel_id ) {
1658
- Some ( chan) => {
1659
- if chan. get_their_node_id ( ) != * their_node_id {
1660
- return Err ( HandleError { err : "Got a message for a channel from the wrong node!" , action : None } )
1661
- }
1662
- chan. accept_channel ( & msg) ?;
1663
- ( chan. get_value_satoshis ( ) , chan. get_funding_redeemscript ( ) . to_v0_p2wsh ( ) , chan. get_user_id ( ) )
1664
- } ,
1665
- None => return Err ( HandleError { err : "Failed to find corresponding channel" , action : None } )
1666
- }
1667
- } ;
1668
- let mut pending_events = self . pending_events . lock ( ) . unwrap ( ) ;
1669
- pending_events. push ( events:: Event :: FundingGenerationReady {
1670
- temporary_channel_id : msg. temporary_channel_id ,
1671
- channel_value_satoshis : value,
1672
- output_script : output_script,
1673
- user_channel_id : user_id,
1674
- } ) ;
1675
- Ok ( ( ) )
1681
+ handle_error ! ( self , self . internal_accept_channel( their_node_id, msg) , their_node_id)
1676
1682
}
1677
1683
1678
1684
fn handle_funding_created ( & self , their_node_id : & PublicKey , msg : & msgs:: FundingCreated ) -> Result < msgs:: FundingSigned , HandleError > {
0 commit comments