X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fln%2Fchannelmanager.rs;h=03cad49ea56af9cf051e1cb2c5e173b3965033b4;hb=0f24a67c825ff2ec9a7656f6fda25726149b8212;hp=e142e8ad5091bb52a9290e1694fbf0e6df6f000f;hpb=50668644cf69f1ce92d71b3a1627e129741f4655;p=rust-lightning diff --git a/src/ln/channelmanager.rs b/src/ln/channelmanager.rs index e142e8ad..03cad49e 100644 --- a/src/ln/channelmanager.rs +++ b/src/ln/channelmanager.rs @@ -21,6 +21,7 @@ use util::{byte_utils, events, internal_traits, rng}; use util::sha2::Sha256; use util::chacha20poly1305rfc::ChaCha20; use util::logger::{Logger, Record}; +use util::errors::APIError; use crypto; use crypto::mac::{Mac,MacResult}; @@ -254,7 +255,8 @@ impl ChannelManager { /// may wish to avoid using 0 for user_id here. /// If successful, will generate a SendOpenChannel event, so you should probably poll /// PeerManager::process_events afterwards. - pub fn create_channel(&self, their_network_key: PublicKey, channel_value_satoshis: u64, user_id: u64) -> Result<(), HandleError> { + /// Raises APIError::APIMisuseError when channel_value_satoshis > 2**24 or push_msat being greater than channel_value_satoshis * 1k + pub fn create_channel(&self, their_network_key: PublicKey, channel_value_satoshis: u64, push_msat: u64, user_id: u64) -> Result<(), APIError> { let chan_keys = if cfg!(feature = "fuzztarget") { ChannelKeys { funding_key: SecretKey::from_slice(&self.secp_ctx, &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]).unwrap(), @@ -275,7 +277,7 @@ impl ChannelManager { } }; - let channel = Channel::new_outbound(&*self.fee_estimator, chan_keys, their_network_key, channel_value_satoshis, self.announce_channels_publicly, user_id, Arc::clone(&self.logger)); + let channel = Channel::new_outbound(&*self.fee_estimator, chan_keys, their_network_key, channel_value_satoshis, push_msat, self.announce_channels_publicly, user_id, Arc::clone(&self.logger))?; let res = channel.get_open_channel(self.genesis_hash.clone(), &*self.fee_estimator)?; let mut channel_state = self.channel_state.lock().unwrap(); match channel_state.by_id.insert(channel.channel_id(), channel) { @@ -2192,7 +2194,7 @@ mod tests { static mut CHAN_COUNT: u32 = 0; fn create_chan_between_nodes(node_a: &Node, node_b: &Node) -> (msgs::ChannelAnnouncement, msgs::ChannelUpdate, msgs::ChannelUpdate, [u8; 32], Transaction) { - node_a.node.create_channel(node_b.node.get_our_node_id(), 100000, 42).unwrap(); + node_a.node.create_channel(node_b.node.get_our_node_id(), 100000, 10001, 42).unwrap(); let events_1 = node_a.node.get_and_clear_pending_events(); assert_eq!(events_1.len(), 1);