Skip to content

Commit c528ff3

Browse files
committed
Handle incoming shutdown messages
1 parent 890e3cb commit c528ff3

File tree

7 files changed

+410
-40
lines changed

7 files changed

+410
-40
lines changed

fuzz/fuzz_targets/channel_target.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,14 @@ pub fn do_test(data: &[u8]) {
248248
let update_fee = decode_msg!(msgs::UpdateFee, 32+4);
249249
return_err!(channel.update_fee(&fee_est, &update_fee));
250250
},
251+
9 => {
252+
let shutdown = decode_msg_with_len16!(msgs::Shutdown, 32, 1);
253+
return_err!(channel.shutdown(&fee_est, &shutdown));
254+
},
255+
10 => {
256+
let closing_signed = decode_msg!(msgs::ClosingSigned, 32+8+64);
257+
return_err!(channel.closing_signed(&fee_est, &closing_signed));
258+
},
251259
_ => return,
252260
}
253261
}

fuzz/fuzz_targets/full_stack_target.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ extern crate bitcoin;
22
extern crate lightning;
33
extern crate secp256k1;
44

5+
use bitcoin::blockdata::transaction::Transaction;
56
use bitcoin::network::constants::Network;
67
use bitcoin::util::hash::Sha256dHash;
78

8-
use lightning::chain::chaininterface::{ConfirmationTarget,FeeEstimator,ChainWatchInterfaceUtil};
9+
use lightning::chain::chaininterface::{BroadcasterInterface,ConfirmationTarget,FeeEstimator,ChainWatchInterfaceUtil};
910
use lightning::ln::{channelmonitor,msgs};
1011
use lightning::ln::channelmanager::ChannelManager;
1112
use lightning::ln::peer_handler::{MessageHandler,PeerManager,SocketDescriptor};
@@ -73,6 +74,11 @@ impl channelmonitor::ManyChannelMonitor for TestChannelMonitor {
7374
}
7475
}
7576

77+
struct TestBroadcaster {}
78+
impl BroadcasterInterface for TestBroadcaster {
79+
fn broadcast_transaction(&self, _tx: &Transaction) {}
80+
}
81+
7682
#[derive(Clone, PartialEq, Eq, Hash)]
7783
struct Peer {
7884
id: u8,
@@ -120,8 +126,9 @@ pub fn do_test(data: &[u8]) {
120126

121127
let monitor = Arc::new(TestChannelMonitor{});
122128
let watch = Arc::new(ChainWatchInterfaceUtil::new());
129+
let broadcast = Arc::new(TestBroadcaster{});
123130

124-
let channelmanager = ChannelManager::new(our_network_key, slice_to_be32(get_slice!(4)), get_slice!(1)[0] != 0, Network::Bitcoin, fee_est.clone(), monitor.clone(), watch.clone()).unwrap();
131+
let channelmanager = ChannelManager::new(our_network_key, slice_to_be32(get_slice!(4)), get_slice!(1)[0] != 0, Network::Bitcoin, fee_est.clone(), monitor.clone(), watch.clone(), broadcast.clone()).unwrap();
125132
let router = Arc::new(Router::new(PublicKey::from_secret_key(&secp_ctx, &our_network_key).unwrap()));
126133

127134
let handler = PeerManager::new(MessageHandler {

0 commit comments

Comments
 (0)