Skip to content

Commit 5522ea4

Browse files
channelmanager+channelmonitor: remove circular reference to chain_monitor
1 parent 61471cf commit 5522ea4

File tree

4 files changed

+12
-4
lines changed

4 files changed

+12
-4
lines changed

src/ln/channelmanager.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,8 +616,7 @@ impl ChannelManager {
616616

617617
logger,
618618
});
619-
let weak_res = Arc::downgrade(&res);
620-
res.chain_monitor.register_listener(weak_res);
619+
621620
Ok(res)
622621
}
623622

src/ln/channelmonitor.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,7 @@ impl<Key : Send + cmp::Eq + hash::Hash + 'static> SimpleManyChannelMonitor<Key>
223223
logger,
224224
fee_estimator: feeest,
225225
});
226-
let weak_res = Arc::downgrade(&res);
227-
res.chain_monitor.register_listener(weak_res);
226+
228227
res
229228
}
230229

src/ln/functional_test_utils.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,10 +841,14 @@ pub fn create_network(node_count: usize, node_config: &[Option<UserConfig>]) ->
841841
rng.fill_bytes(&mut seed);
842842
let keys_manager = Arc::new(test_utils::TestKeysInterface::new(&seed, Network::Testnet, Arc::clone(&logger)));
843843
let chan_monitor = Arc::new(test_utils::TestChannelMonitor::new(chain_monitor.clone(), tx_broadcaster.clone(), logger.clone(), feeest.clone()));
844+
let weak_res = Arc::downgrade(&chan_monitor.simple_monitor);
845+
block_notifier.register_listener(weak_res);
844846
let mut default_config = UserConfig::new();
845847
default_config.channel_options.announced_channel = true;
846848
default_config.peer_channel_config_limits.force_announced_channel_preference = false;
847849
let node = ChannelManager::new(Network::Testnet, feeest.clone(), chan_monitor.clone(), chain_monitor.clone(), tx_broadcaster.clone(), Arc::clone(&logger), keys_manager.clone(), if node_config[i].is_some() { node_config[i].clone().unwrap() } else { default_config }).unwrap();
850+
let weak_res = Arc::downgrade(&node);
851+
block_notifier.register_listener(weak_res);
848852
let router = Router::new(PublicKey::from_secret_key(&secp_ctx, &keys_manager.get_node_secret()), chain_monitor.clone(), Arc::clone(&logger));
849853
nodes.push(Node { chain_monitor, tx_broadcaster, chan_monitor, node, router, keys_manager, node_seed: seed,
850854
network_payment_count: payment_count.clone(),

src/ln/functional_tests.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6047,6 +6047,12 @@ fn test_data_loss_protect() {
60476047
monitor.add_update_monitor(OutPoint { txid: chan.3.txid(), index: 0 }, chan_monitor.clone()).is_ok();
60486048
nodes[0].chan_monitor = monitor;
60496049
nodes[0].chain_monitor = chain_monitor;
6050+
6051+
let weak_res = Arc::downgrade(&nodes[0].chan_monitor.simple_monitor);
6052+
nodes[0].block_notifier.register_listener(weak_res);
6053+
let weak_res = Arc::downgrade(&nodes[0].node);
6054+
nodes[0].block_notifier.register_listener(weak_res);
6055+
60506056
check_added_monitors!(nodes[0], 1);
60516057

60526058
nodes[0].node.peer_connected(&nodes[1].node.get_our_node_id());

0 commit comments

Comments
 (0)