Skip to content

Commit 8c2f0c3

Browse files
Antoine RiardTheBlueMatt
authored andcommitted
Refactor handle_accept_channel to wrapper error handling function
1 parent 2a93f98 commit 8c2f0c3

File tree

1 file changed

+27
-21
lines changed

1 file changed

+27
-21
lines changed

src/ln/channelmanager.rs

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1439,6 +1439,32 @@ impl ChannelManager {
14391439
Ok(accept_msg)
14401440
}
14411441

1442+
fn internal_accept_channel(&self, their_node_id: &PublicKey, msg: &msgs::AcceptChannel) -> Result<(), MsgHandleErrInternal> {
1443+
let (value, output_script, user_id) = {
1444+
let mut channel_state = self.channel_state.lock().unwrap();
1445+
match channel_state.by_id.get_mut(&msg.temporary_channel_id) {
1446+
Some(chan) => {
1447+
if chan.get_their_node_id() != *their_node_id {
1448+
//TODO: see issue #153, need a consistent behavior on obnoxious behavior from random node
1449+
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!", msg.temporary_channel_id));
1450+
}
1451+
chan.accept_channel(&msg).map_err(|e| MsgHandleErrInternal::from_maybe_close(e))?;
1452+
(chan.get_value_satoshis(), chan.get_funding_redeemscript().to_v0_p2wsh(), chan.get_user_id())
1453+
},
1454+
//TODO: same as above
1455+
None => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel", msg.temporary_channel_id))
1456+
}
1457+
};
1458+
let mut pending_events = self.pending_events.lock().unwrap();
1459+
pending_events.push(events::Event::FundingGenerationReady {
1460+
temporary_channel_id: msg.temporary_channel_id,
1461+
channel_value_satoshis: value,
1462+
output_script: output_script,
1463+
user_channel_id: user_id,
1464+
});
1465+
Ok(())
1466+
}
1467+
14421468
fn internal_announcement_signatures(&self, their_node_id: &PublicKey, msg: &msgs::AnnouncementSignatures) -> Result<(), MsgHandleErrInternal> {
14431469
let (chan_announcement, chan_update) = {
14441470
let mut channel_state = self.channel_state.lock().unwrap();
@@ -1645,27 +1671,7 @@ impl ChannelMessageHandler for ChannelManager {
16451671
}
16461672

16471673
fn handle_accept_channel(&self, their_node_id: &PublicKey, msg: &msgs::AcceptChannel) -> Result<(), HandleError> {
1648-
let (value, output_script, user_id) = {
1649-
let mut channel_state = self.channel_state.lock().unwrap();
1650-
match channel_state.by_id.get_mut(&msg.temporary_channel_id) {
1651-
Some(chan) => {
1652-
if chan.get_their_node_id() != *their_node_id {
1653-
return Err(HandleError{err: "Got a message for a channel from the wrong node!", action: None})
1654-
}
1655-
chan.accept_channel(&msg)?;
1656-
(chan.get_value_satoshis(), chan.get_funding_redeemscript().to_v0_p2wsh(), chan.get_user_id())
1657-
},
1658-
None => return Err(HandleError{err: "Failed to find corresponding channel", action: None})
1659-
}
1660-
};
1661-
let mut pending_events = self.pending_events.lock().unwrap();
1662-
pending_events.push(events::Event::FundingGenerationReady {
1663-
temporary_channel_id: msg.temporary_channel_id,
1664-
channel_value_satoshis: value,
1665-
output_script: output_script,
1666-
user_channel_id: user_id,
1667-
});
1668-
Ok(())
1674+
handle_error!(self, self.internal_accept_channel(their_node_id, msg), their_node_id)
16691675
}
16701676

16711677
fn handle_funding_created(&self, their_node_id: &PublicKey, msg: &msgs::FundingCreated) -> Result<msgs::FundingSigned, HandleError> {

0 commit comments

Comments
 (0)