@@ -7414,6 +7414,8 @@ impl<SP: Deref> Writeable for Channel<SP> where SP::Target: SignerProvider {
7414
7414
let mut channel_state = self.context.channel_state;
7415
7415
if matches!(channel_state, ChannelState::AwaitingChannelReady(_)|ChannelState::ChannelReady(_)) {
7416
7416
channel_state.set_peer_disconnected();
7417
+ } else {
7418
+ debug_assert!(false, "Pre-funded/shutdown channels should not be written");
7417
7419
}
7418
7420
channel_state.to_u32().write(writer)?;
7419
7421
}
@@ -8834,17 +8836,34 @@ mod tests {
8834
8836
fn blinding_point_skimmed_fee_malformed_ser() {
8835
8837
// Ensure that channel blinding points, skimmed fees, and malformed HTLCs are (de)serialized
8836
8838
// properly.
8839
+ let logger = test_utils::TestLogger::new();
8837
8840
let feeest = LowerBoundedFeeEstimator::new(&TestFeeEstimator{fee_est: 15000});
8838
8841
let secp_ctx = Secp256k1::new();
8839
8842
let seed = [42; 32];
8840
8843
let network = Network::Testnet;
8844
+ let best_block = BestBlock::from_network(network);
8841
8845
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
8842
8846
8843
8847
let node_b_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
8844
8848
let config = UserConfig::default();
8845
8849
let features = channelmanager::provided_init_features(&config);
8846
- let outbound_chan = OutboundV1Channel::<&TestKeysInterface>::new(&feeest, &&keys_provider, &&keys_provider, node_b_node_id, &features, 10000000, 100000, 42, &config, 0, 42, None).unwrap();
8847
- let mut chan = Channel { context: outbound_chan.context };
8850
+ let mut outbound_chan = OutboundV1Channel::<&TestKeysInterface>::new(
8851
+ &feeest, &&keys_provider, &&keys_provider, node_b_node_id, &features, 10000000, 100000, 42, &config, 0, 42, None
8852
+ ).unwrap();
8853
+ let inbound_chan = InboundV1Channel::<&TestKeysInterface>::new(
8854
+ &feeest, &&keys_provider, &&keys_provider, node_b_node_id, &channelmanager::provided_channel_type_features(&config),
8855
+ &features, &outbound_chan.get_open_channel(ChainHash::using_genesis_block(network)), 7, &config, 0, &&logger, false
8856
+ ).unwrap();
8857
+ outbound_chan.accept_channel(&inbound_chan.get_accept_channel_message(), &config.channel_handshake_limits, &features).unwrap();
8858
+ let tx = Transaction { version: 1, lock_time: LockTime::ZERO, input: Vec::new(), output: vec![TxOut {
8859
+ value: 10000000, script_pubkey: outbound_chan.context.get_funding_redeemscript(),
8860
+ }]};
8861
+ let funding_outpoint = OutPoint{ txid: tx.txid(), index: 0 };
8862
+ let funding_created = outbound_chan.get_funding_created(tx.clone(), funding_outpoint, false, &&logger).map_err(|_| ()).unwrap().unwrap();
8863
+ let mut chan = match inbound_chan.funding_created(&funding_created, best_block, &&keys_provider, &&logger) {
8864
+ Ok((chan, _, _)) => chan,
8865
+ Err((_, e)) => panic!("{}", e),
8866
+ };
8848
8867
8849
8868
let dummy_htlc_source = HTLCSource::OutboundRoute {
8850
8869
path: Path {
0 commit comments