mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-02-24 15:02:20 +01:00
Unify failure to query Channel
error messages
This commit is contained in:
parent
ff9840ea35
commit
0eb74ec007
5 changed files with 51 additions and 105 deletions
|
@ -1523,7 +1523,7 @@ where
|
|||
let per_peer_state = self.per_peer_state.read().unwrap();
|
||||
|
||||
match per_peer_state.get(&their_network_key) {
|
||||
None => return Err(APIError::ChannelUnavailable { err: format!("Not connected to node: {}", their_network_key) }),
|
||||
None => return Err(APIError::APIMisuseError { err: format!("Not connected to node: {}", their_network_key) }),
|
||||
Some(peer_state_mutex) => {
|
||||
let mut peer_state = peer_state_mutex.lock().unwrap();
|
||||
let channel = {
|
||||
|
@ -1680,9 +1680,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(channel_id.clone()) {
|
||||
hash_map::Entry::Occupied(mut chan_entry) => {
|
||||
if *counterparty_node_id != chan_entry.get().get_counterparty_node_id(){
|
||||
return Err(APIError::APIMisuseError { err: "The passed counterparty_node_id doesn't match the channel's counterparty node_id".to_owned() });
|
||||
}
|
||||
let (shutdown_msg, monitor_update, htlcs) = chan_entry.get_mut().get_shutdown(&self.keys_manager, &peer_state.latest_features, target_feerate_sats_per_1000_weight)?;
|
||||
failed_htlcs = htlcs;
|
||||
|
||||
|
@ -1713,10 +1710,10 @@ where
|
|||
}
|
||||
break Ok(());
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(APIError::ChannelUnavailable { err: "No such channel".to_owned() })
|
||||
hash_map::Entry::Vacant(_) => return Err(APIError::ChannelUnavailable{err: format!("Channel with id {} not found for the passed counterparty node_id {}", log_bytes!(*channel_id), counterparty_node_id) })
|
||||
}
|
||||
} else {
|
||||
return Err(APIError::ChannelUnavailable { err: format!("Not connected to node: {}", counterparty_node_id) });
|
||||
return Err(APIError::APIMisuseError { err: format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id) });
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1803,9 +1800,6 @@ where
|
|||
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
|
||||
let peer_state = &mut *peer_state_lock;
|
||||
if let hash_map::Entry::Occupied(chan) = peer_state.channel_by_id.entry(channel_id.clone()) {
|
||||
if chan.get().get_counterparty_node_id() != *peer_node_id {
|
||||
return Err(APIError::ChannelUnavailable{err: "No such channel".to_owned()});
|
||||
}
|
||||
if let Some(peer_msg) = peer_msg {
|
||||
self.issue_channel_close_events(chan.get(),ClosureReason::CounterpartyForceClosed { peer_msg: peer_msg.to_string() });
|
||||
} else {
|
||||
|
@ -1813,10 +1807,10 @@ where
|
|||
}
|
||||
remove_channel!(self, chan)
|
||||
} else {
|
||||
return Err(APIError::ChannelUnavailable{err: "No such channel".to_owned()});
|
||||
return Err(APIError::ChannelUnavailable{ err: format!("Channel with id {} not found for the passed counterparty node_id {}", log_bytes!(*channel_id), peer_node_id) });
|
||||
}
|
||||
} else {
|
||||
return Err(APIError::APIMisuseError{ err: format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", peer_node_id) });
|
||||
return Err(APIError::APIMisuseError{ err: format!("Can't find a peer matching the passed counterparty node_id {}", peer_node_id) });
|
||||
}
|
||||
};
|
||||
log_error!(self.logger, "Force-closing channel {}", log_bytes!(channel_id[..]));
|
||||
|
@ -2547,7 +2541,7 @@ where
|
|||
} else { unreachable!(); })
|
||||
, chan)
|
||||
},
|
||||
None => { return Err(APIError::ChannelUnavailable { err: "No such channel".to_owned() }) },
|
||||
None => { return Err(APIError::ChannelUnavailable { err: format!("Channel with id {} not found for the passed counterparty node_id {}", log_bytes!(*temporary_channel_id), counterparty_node_id) }) },
|
||||
}
|
||||
};
|
||||
match handle_error!(self, res, chan.get_counterparty_node_id()) {
|
||||
|
@ -2579,7 +2573,7 @@ where
|
|||
}
|
||||
Ok(())
|
||||
} else {
|
||||
return Err(APIError::APIMisuseError { err: format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id) })
|
||||
return Err(APIError::APIMisuseError { err: format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id) })
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2712,7 +2706,7 @@ where
|
|||
for channel_id in channel_ids {
|
||||
if !peer_state.channel_by_id.contains_key(channel_id) {
|
||||
return Err(APIError::ChannelUnavailable {
|
||||
err: format!("Channel with ID {} was not found", log_bytes!(*channel_id)),
|
||||
err: format!("Channel with ID {} was not found for the passed counterparty_node_id {}", log_bytes!(*channel_id), counterparty_node_id),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -2731,7 +2725,7 @@ where
|
|||
}
|
||||
}
|
||||
} else {
|
||||
return Err(APIError::APIMisuseError{ err: format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id) });
|
||||
return Err(APIError::APIMisuseError{ err: format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id) });
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
|
@ -2777,11 +2771,11 @@ where
|
|||
chan.get_short_channel_id().unwrap_or(chan.outbound_scid_alias())
|
||||
},
|
||||
None => return Err(APIError::ChannelUnavailable {
|
||||
err: format!("Channel with id {} not found", log_bytes!(*next_hop_channel_id))
|
||||
err: format!("Channel with id {} not found for the passed counterparty node_id {}", log_bytes!(*next_hop_channel_id), next_node_id)
|
||||
})
|
||||
}
|
||||
} else {
|
||||
return Err(APIError::APIMisuseError{ err: format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", next_node_id) });
|
||||
return Err(APIError::APIMisuseError{ err: format!("Can't find a peer matching the passed counterparty node_id {}", next_node_id) });
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -4146,9 +4140,6 @@ where
|
|||
if !channel.get().inbound_is_awaiting_accept() {
|
||||
return Err(APIError::APIMisuseError { err: "The channel isn't currently awaiting to be accepted.".to_owned() });
|
||||
}
|
||||
if *counterparty_node_id != channel.get().get_counterparty_node_id() {
|
||||
return Err(APIError::APIMisuseError { err: "The passed counterparty_node_id doesn't match the channel's counterparty node_id".to_owned() });
|
||||
}
|
||||
if accept_0conf {
|
||||
channel.get_mut().set_0conf();
|
||||
} else if channel.get().get_channel_type().requires_zero_conf() {
|
||||
|
@ -4169,11 +4160,11 @@ where
|
|||
});
|
||||
}
|
||||
hash_map::Entry::Vacant(_) => {
|
||||
return Err(APIError::ChannelUnavailable { err: "Can't accept a channel that doesn't exist".to_owned() });
|
||||
return Err(APIError::ChannelUnavailable { err: format!("Channel with id {} not found for the passed counterparty node_id {}", log_bytes!(*temporary_channel_id), counterparty_node_id) });
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return Err(APIError::APIMisuseError { err: format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id) });
|
||||
return Err(APIError::APIMisuseError { err: format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id) });
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -4239,7 +4230,7 @@ where
|
|||
}
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.temporary_channel_id.clone()))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.temporary_channel_id.clone()))
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -4252,16 +4243,13 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.temporary_channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.temporary_channel_id));
|
||||
}
|
||||
try_chan_entry!(self, chan.get_mut().accept_channel(&msg, &self.default_configuration.channel_handshake_limits, &their_features), chan);
|
||||
(chan.get().get_value_satoshis(), chan.get().get_funding_redeemscript().to_v0_p2wsh(), chan.get().get_user_id())
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.temporary_channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.temporary_channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.temporary_channel_id))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.temporary_channel_id))
|
||||
}
|
||||
};
|
||||
let mut pending_events = self.pending_events.lock().unwrap();
|
||||
|
@ -4286,15 +4274,12 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.temporary_channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.temporary_channel_id));
|
||||
}
|
||||
(try_chan_entry!(self, chan.get_mut().funding_created(msg, best_block, &self.keys_manager, &self.logger), chan), chan.remove())
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.temporary_channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.temporary_channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.temporary_channel_id))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.temporary_channel_id))
|
||||
}
|
||||
};
|
||||
// Because we have exclusive ownership of the channel here we can release the peer_state
|
||||
|
@ -4368,9 +4353,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
let (monitor, funding_tx, channel_ready) = match chan.get_mut().funding_signed(&msg, best_block, &self.keys_manager, &self.logger) {
|
||||
Ok(update) => update,
|
||||
Err(e) => try_chan_entry!(self, Err(e), chan),
|
||||
|
@ -4395,10 +4377,10 @@ where
|
|||
}
|
||||
funding_tx
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
};
|
||||
log_info!(self.logger, "Broadcasting funding transaction with txid {}", funding_tx.txid());
|
||||
|
@ -4415,9 +4397,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
let announcement_sigs_opt = try_chan_entry!(self, chan.get_mut().channel_ready(&msg, self.get_our_node_id(),
|
||||
self.genesis_hash.clone(), &self.best_block.read().unwrap(), &self.logger), chan);
|
||||
if let Some(announcement_sigs) = announcement_sigs_opt {
|
||||
|
@ -4445,10 +4424,10 @@ where
|
|||
|
||||
Ok(())
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4463,9 +4442,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id.clone()) {
|
||||
hash_map::Entry::Occupied(mut chan_entry) => {
|
||||
if chan_entry.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
|
||||
if !chan_entry.get().received_shutdown() {
|
||||
log_info!(self.logger, "Received a shutdown message from our counterparty for channel {}{}.",
|
||||
|
@ -4496,10 +4472,10 @@ where
|
|||
|
||||
break Ok(());
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
};
|
||||
for htlc_source in dropped_htlcs.drain(..) {
|
||||
|
@ -4522,9 +4498,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id.clone()) {
|
||||
hash_map::Entry::Occupied(mut chan_entry) => {
|
||||
if chan_entry.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
let (closing_signed, tx) = try_chan_entry!(self, chan_entry.get_mut().closing_signed(&self.fee_estimator, &msg), chan_entry);
|
||||
if let Some(msg) = closing_signed {
|
||||
channel_state.pending_msg_events.push(events::MessageSendEvent::SendClosingSigned {
|
||||
|
@ -4541,10 +4514,10 @@ where
|
|||
(tx, Some(remove_channel!(self, chan_entry)))
|
||||
} else { (tx, None) }
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
};
|
||||
if let Some(broadcast_tx) = tx {
|
||||
|
@ -4580,9 +4553,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
|
||||
let create_pending_htlc_status = |chan: &Channel<<K::Target as SignerProvider>::Signer>, pending_forward_info: PendingHTLCStatus, error_code: u16| {
|
||||
// If the update_add is completely bogus, the call will Err and we will close,
|
||||
|
@ -4608,10 +4578,10 @@ where
|
|||
};
|
||||
try_chan_entry!(self, chan.get_mut().update_add_htlc(&msg, pending_forward_info, create_pending_htlc_status, &self.logger), chan);
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -4621,19 +4591,16 @@ where
|
|||
let (htlc_source, forwarded_htlc_value) = {
|
||||
let per_peer_state = self.per_peer_state.read().unwrap();
|
||||
if let None = per_peer_state.get(counterparty_node_id) {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id));
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id));
|
||||
}
|
||||
let peer_state_mutex = per_peer_state.get(counterparty_node_id).unwrap();
|
||||
let mut peer_state_lock = peer_state_mutex.lock().unwrap();
|
||||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
try_chan_entry!(self, chan.get_mut().update_fulfill_htlc(&msg), chan)
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
};
|
||||
self.claim_funds_internal(channel_lock, htlc_source, msg.payment_preimage.clone(), Some(forwarded_htlc_value), false, msg.channel_id);
|
||||
|
@ -4647,15 +4614,12 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
try_chan_entry!(self, chan.get_mut().update_fail_htlc(&msg, HTLCFailReason::from_msg(msg)), chan);
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id));
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -4667,9 +4631,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
if (msg.failure_code & 0x8000) == 0 {
|
||||
let chan_err: ChannelError = ChannelError::Close("Got update_fail_malformed_htlc with BADONION not set".to_owned());
|
||||
try_chan_entry!(self, Err(chan_err), chan);
|
||||
|
@ -4677,10 +4638,10 @@ where
|
|||
try_chan_entry!(self, chan.get_mut().update_fail_malformed_htlc(&msg, HTLCFailReason::reason(msg.failure_code, msg.sha256_of_onion.to_vec())), chan);
|
||||
Ok(())
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4693,9 +4654,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
let (revoke_and_ack, commitment_signed, monitor_update) =
|
||||
match chan.get_mut().commitment_signed(&msg, &self.logger) {
|
||||
Err((None, e)) => try_chan_entry!(self, Err(e), chan),
|
||||
|
@ -4731,10 +4689,10 @@ where
|
|||
}
|
||||
Ok(())
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4841,9 +4799,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
break Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
let was_paused_for_mon_update = chan.get().is_awaiting_monitor_update();
|
||||
let raa_updates = break_chan_entry!(self,
|
||||
chan.get_mut().revoke_and_ack(&msg, &self.logger), chan);
|
||||
|
@ -4879,10 +4834,10 @@ where
|
|||
chan.get().get_funding_txo().unwrap(),
|
||||
chan.get().get_user_id()))
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => break Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => break Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
break Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
break Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
};
|
||||
self.fail_holding_cell_htlcs(htlcs_to_fail, msg.channel_id, counterparty_node_id);
|
||||
|
@ -4909,15 +4864,12 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
try_chan_entry!(self, chan.get_mut().update_fee(&self.fee_estimator, &msg, &self.logger), chan);
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id));
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -4931,9 +4883,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
if !chan.get().is_usable() {
|
||||
return Err(MsgHandleErrInternal::from_no_close(LightningError{err: "Got an announcement_signatures before we were ready for it".to_owned(), action: msgs::ErrorAction::IgnoreError}));
|
||||
}
|
||||
|
@ -4946,10 +4895,10 @@ where
|
|||
update_msg: self.get_channel_update_for_broadcast(chan.get()).unwrap(),
|
||||
});
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id));
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
@ -5007,9 +4956,6 @@ where
|
|||
let peer_state = &mut *peer_state_lock;
|
||||
match peer_state.channel_by_id.entry(msg.channel_id) {
|
||||
hash_map::Entry::Occupied(mut chan) => {
|
||||
if chan.get().get_counterparty_node_id() != *counterparty_node_id {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close("Got a message for a channel from the wrong node!".to_owned(), msg.channel_id));
|
||||
}
|
||||
// Currently, we expect all holding cell update_adds to be dropped on peer
|
||||
// disconnect, so Channel's reestablish will never hand us any holding cell
|
||||
// freed HTLCs to fail backwards. If in the future we no longer drop pending
|
||||
|
@ -5043,10 +4989,10 @@ where
|
|||
}
|
||||
need_lnd_workaround
|
||||
},
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close("Failed to find corresponding channel".to_owned(), msg.channel_id))
|
||||
hash_map::Entry::Vacant(_) => return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id))
|
||||
}
|
||||
} else {
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer with a node_id matching the passed counterparty_node_id {}", counterparty_node_id), msg.channel_id));
|
||||
return Err(MsgHandleErrInternal::send_err_msg_no_close(format!("Can't find a peer matching the passed counterparty node_id {}", counterparty_node_id), msg.channel_id));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -7850,7 +7850,7 @@ fn test_can_not_accept_unknown_inbound_channel() {
|
|||
let api_res = nodes[0].node.accept_inbound_channel(&unknown_channel_id, &nodes[1].node.get_our_node_id(), 0);
|
||||
match api_res {
|
||||
Err(APIError::ChannelUnavailable { err }) => {
|
||||
assert_eq!(err, "Can't accept a channel that doesn't exist");
|
||||
assert_eq!(err, format!("Channel with id {} not found for the passed counterparty node_id {}", log_bytes!(unknown_channel_id), nodes[1].node.get_our_node_id()));
|
||||
},
|
||||
Ok(_) => panic!("It shouldn't be possible to accept an unkown channel"),
|
||||
Err(_) => panic!("Unexpected Error"),
|
||||
|
|
|
@ -436,7 +436,7 @@ fn do_retry_with_no_persist(confirm_before_reload: bool) {
|
|||
MessageSendEvent::HandleError { node_id, action: msgs::ErrorAction::SendErrorMessage { ref msg } } => {
|
||||
assert_eq!(node_id, nodes[1].node.get_our_node_id());
|
||||
nodes[1].node.handle_error(&nodes[0].node.get_our_node_id(), msg);
|
||||
check_closed_event!(nodes[1], 1, ClosureReason::CounterpartyForceClosed { peer_msg: "Failed to find corresponding channel".to_string() });
|
||||
check_closed_event!(nodes[1], 1, ClosureReason::CounterpartyForceClosed { peer_msg: format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", &nodes[1].node.get_our_node_id()) });
|
||||
check_added_monitors!(nodes[1], 1);
|
||||
assert_eq!(nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0).len(), 1);
|
||||
},
|
||||
|
@ -601,7 +601,7 @@ fn do_test_completed_payment_not_retryable_on_reload(use_dust: bool) {
|
|||
MessageSendEvent::HandleError { node_id, action: msgs::ErrorAction::SendErrorMessage { ref msg } } => {
|
||||
assert_eq!(node_id, nodes[1].node.get_our_node_id());
|
||||
nodes[1].node.handle_error(&nodes[0].node.get_our_node_id(), msg);
|
||||
check_closed_event!(nodes[1], 1, ClosureReason::CounterpartyForceClosed { peer_msg: "Failed to find corresponding channel".to_string() });
|
||||
check_closed_event!(nodes[1], 1, ClosureReason::CounterpartyForceClosed { peer_msg: format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", &nodes[1].node.get_our_node_id()) });
|
||||
check_added_monitors!(nodes[1], 1);
|
||||
bs_commitment_tx = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
|
||||
},
|
||||
|
@ -1474,7 +1474,7 @@ fn do_test_intercepted_payment(test: InterceptTest) {
|
|||
|
||||
// Check for unknown channel id error.
|
||||
let unknown_chan_id_err = nodes[1].node.forward_intercepted_htlc(intercept_id, &[42; 32], nodes[2].node.get_our_node_id(), expected_outbound_amount_msat).unwrap_err();
|
||||
assert_eq!(unknown_chan_id_err , APIError::ChannelUnavailable { err: format!("Channel with id {} not found", log_bytes!([42; 32])) });
|
||||
assert_eq!(unknown_chan_id_err , APIError::ChannelUnavailable { err: format!("Channel with id {} not found for the passed counterparty node_id {}", log_bytes!([42; 32]), nodes[2].node.get_our_node_id()) });
|
||||
|
||||
if test == InterceptTest::Fail {
|
||||
// Ensure we can fail the intercepted payment back.
|
||||
|
|
|
@ -551,7 +551,7 @@ fn do_test_data_loss_protect(reconnect_panicing: bool) {
|
|||
if let MessageSendEvent::HandleError { ref action, .. } = msg {
|
||||
match action {
|
||||
&ErrorAction::SendErrorMessage { ref msg } => {
|
||||
assert_eq!(msg.data, "Failed to find corresponding channel");
|
||||
assert_eq!(msg.data, format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", &nodes[1].node.get_our_node_id()));
|
||||
err_msgs_0.push(msg.clone());
|
||||
},
|
||||
_ => panic!("Unexpected event!"),
|
||||
|
@ -564,7 +564,7 @@ fn do_test_data_loss_protect(reconnect_panicing: bool) {
|
|||
nodes[1].node.handle_error(&nodes[0].node.get_our_node_id(), &err_msgs_0[0]);
|
||||
assert!(nodes[1].node.list_usable_channels().is_empty());
|
||||
check_added_monitors!(nodes[1], 1);
|
||||
check_closed_event!(nodes[1], 1, ClosureReason::CounterpartyForceClosed { peer_msg: "Failed to find corresponding channel".to_owned() });
|
||||
check_closed_event!(nodes[1], 1, ClosureReason::CounterpartyForceClosed { peer_msg: format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", &nodes[1].node.get_our_node_id()) });
|
||||
check_closed_broadcast!(nodes[1], false);
|
||||
}
|
||||
|
||||
|
|
|
@ -380,7 +380,7 @@ fn do_test_shutdown_rebroadcast(recv_count: u8) {
|
|||
// closing_signed so we do it ourselves
|
||||
check_closed_broadcast!(nodes[1], false);
|
||||
check_added_monitors!(nodes[1], 1);
|
||||
check_closed_event!(nodes[1], 1, ClosureReason::CounterpartyForceClosed { peer_msg: "Failed to find corresponding channel".to_string() });
|
||||
check_closed_event!(nodes[1], 1, ClosureReason::CounterpartyForceClosed { peer_msg: format!("Got a message for a channel from the wrong node! No such channel for the passed counterparty_node_id {}", &nodes[1].node.get_our_node_id()) });
|
||||
}
|
||||
|
||||
assert!(nodes[0].node.list_channels().is_empty());
|
||||
|
|
Loading…
Add table
Reference in a new issue