Skip to content

Commit fe7f548

Browse files
committed
Add payment_hash to WithChannelMonitor
1 parent 3fb329b commit fe7f548

File tree

3 files changed

+30
-26
lines changed

3 files changed

+30
-26
lines changed

lightning/src/chain/chainmonitor.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ where C::Target: chain::Filter,
301301
monitor_state: &MonitorHolder<ChannelSigner>
302302
) -> Result<(), ()> where FN: Fn(&ChannelMonitor<ChannelSigner>, &TransactionData) -> Vec<TransactionOutputs> {
303303
let monitor = &monitor_state.monitor;
304-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
304+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
305305
let mut txn_outputs;
306306
{
307307
txn_outputs = process(monitor, txdata);
@@ -599,15 +599,15 @@ where C::Target: chain::Filter,
599599
pub fn archive_fully_resolved_channel_monitors(&self) {
600600
let mut have_monitors_to_prune = false;
601601
for (_, monitor_holder) in self.monitors.read().unwrap().iter() {
602-
let logger = WithChannelMonitor::from(&self.logger, &monitor_holder.monitor);
602+
let logger = WithChannelMonitor::from(&self.logger, &monitor_holder.monitor, None);
603603
if monitor_holder.monitor.is_fully_resolved(&logger) {
604604
have_monitors_to_prune = true;
605605
}
606606
}
607607
if have_monitors_to_prune {
608608
let mut monitors = self.monitors.write().unwrap();
609609
monitors.retain(|funding_txo, monitor_holder| {
610-
let logger = WithChannelMonitor::from(&self.logger, &monitor_holder.monitor);
610+
let logger = WithChannelMonitor::from(&self.logger, &monitor_holder.monitor, None);
611611
if monitor_holder.monitor.is_fully_resolved(&logger) {
612612
log_info!(logger,
613613
"Archiving fully resolved ChannelMonitor for funding txo {}",
@@ -715,7 +715,7 @@ where C::Target: chain::Filter,
715715
P::Target: Persist<ChannelSigner>,
716716
{
717717
fn watch_channel(&self, funding_outpoint: OutPoint, monitor: ChannelMonitor<ChannelSigner>) -> Result<ChannelMonitorUpdateStatus, ()> {
718-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
718+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
719719
let mut monitors = self.monitors.write().unwrap();
720720
let entry = match monitors.entry(funding_outpoint) {
721721
hash_map::Entry::Occupied(_) => {
@@ -773,7 +773,7 @@ where C::Target: chain::Filter,
773773
},
774774
Some(monitor_state) => {
775775
let monitor = &monitor_state.monitor;
776-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
776+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
777777
log_trace!(logger, "Updating ChannelMonitor to id {} for channel {}", update.update_id, log_funding_info!(monitor));
778778
let update_res = monitor.update_monitor(update, &self.broadcaster, &self.fee_estimator, &self.logger);
779779

lightning/src/chain/channelmonitor.rs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,26 +1195,28 @@ pub(crate) struct WithChannelMonitor<'a, L: Deref> where L::Target: Logger {
11951195
logger: &'a L,
11961196
peer_id: Option<PublicKey>,
11971197
channel_id: Option<ChannelId>,
1198+
payment_hash: Option<PaymentHash>,
11981199
}
11991200

12001201
impl<'a, L: Deref> Logger for WithChannelMonitor<'a, L> where L::Target: Logger {
12011202
fn log(&self, mut record: Record) {
12021203
record.peer_id = self.peer_id;
12031204
record.channel_id = self.channel_id;
1205+
record.payment_hash = self.payment_hash;
12041206
self.logger.log(record)
12051207
}
12061208
}
12071209

12081210
impl<'a, L: Deref> WithChannelMonitor<'a, L> where L::Target: Logger {
1209-
pub(crate) fn from<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor: &ChannelMonitor<S>) -> Self {
1210-
Self::from_impl(logger, &*monitor.inner.lock().unwrap())
1211+
pub(crate) fn from<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor: &ChannelMonitor<S>, payment_hash: Option<PaymentHash>) -> Self {
1212+
Self::from_impl(logger, &*monitor.inner.lock().unwrap(), payment_hash)
12111213
}
12121214

1213-
pub(crate) fn from_impl<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor_impl: &ChannelMonitorImpl<S>) -> Self {
1215+
pub(crate) fn from_impl<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor_impl: &ChannelMonitorImpl<S>, payment_hash: Option<PaymentHash>) -> Self {
12141216
let peer_id = monitor_impl.counterparty_node_id;
12151217
let channel_id = Some(monitor_impl.channel_id());
12161218
WithChannelMonitor {
1217-
logger, peer_id, channel_id,
1219+
logger, peer_id, channel_id, payment_hash,
12181220
}
12191221
}
12201222
}
@@ -1356,7 +1358,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
13561358
where L::Target: Logger
13571359
{
13581360
let mut inner = self.inner.lock().unwrap();
1359-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1361+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
13601362
inner.provide_initial_counterparty_commitment_tx(txid,
13611363
htlc_outputs, commitment_number, their_cur_per_commitment_point, feerate_per_kw,
13621364
to_broadcaster_value_sat, to_countersignatory_value_sat, &logger);
@@ -1376,7 +1378,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
13761378
logger: &L,
13771379
) where L::Target: Logger {
13781380
let mut inner = self.inner.lock().unwrap();
1379-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1381+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
13801382
inner.provide_latest_counterparty_commitment_tx(
13811383
txid, htlc_outputs, commitment_number, their_per_commitment_point, &logger)
13821384
}
@@ -1404,7 +1406,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14041406
L::Target: Logger,
14051407
{
14061408
let mut inner = self.inner.lock().unwrap();
1407-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1409+
let logger = WithChannelMonitor::from_impl(logger, &*inner, Some(*payment_hash));
14081410
inner.provide_payment_preimage(
14091411
payment_hash, payment_preimage, broadcaster, fee_estimator, &logger)
14101412
}
@@ -1426,7 +1428,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14261428
L::Target: Logger,
14271429
{
14281430
let mut inner = self.inner.lock().unwrap();
1429-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1431+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
14301432
inner.update_monitor(updates, broadcaster, fee_estimator, &logger)
14311433
}
14321434

@@ -1461,7 +1463,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14611463
F::Target: chain::Filter, L::Target: Logger,
14621464
{
14631465
let lock = self.inner.lock().unwrap();
1464-
let logger = WithChannelMonitor::from_impl(logger, &*lock);
1466+
let logger = WithChannelMonitor::from_impl(logger, &*lock, None);
14651467
log_trace!(&logger, "Registering funding outpoint {}", &lock.get_funding_txo().0);
14661468
filter.register_tx(&lock.get_funding_txo().0.txid, &lock.get_funding_txo().1);
14671469
for (txid, outputs) in lock.get_outputs_to_watch().iter() {
@@ -1621,7 +1623,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16211623
{
16221624
let mut inner = self.inner.lock().unwrap();
16231625
let fee_estimator = LowerBoundedFeeEstimator::new(&**fee_estimator);
1624-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1626+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16251627
inner.queue_latest_holder_commitment_txn_for_broadcast(broadcaster, &fee_estimator, &logger);
16261628
}
16271629

@@ -1632,7 +1634,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16321634
pub fn unsafe_get_latest_holder_commitment_txn<L: Deref>(&self, logger: &L) -> Vec<Transaction>
16331635
where L::Target: Logger {
16341636
let mut inner = self.inner.lock().unwrap();
1635-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1637+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16361638
inner.unsafe_get_latest_holder_commitment_txn(&logger)
16371639
}
16381640

@@ -1662,7 +1664,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16621664
L::Target: Logger,
16631665
{
16641666
let mut inner = self.inner.lock().unwrap();
1665-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1667+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16661668
inner.block_connected(
16671669
header, txdata, height, broadcaster, fee_estimator, &logger)
16681670
}
@@ -1682,7 +1684,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16821684
L::Target: Logger,
16831685
{
16841686
let mut inner = self.inner.lock().unwrap();
1685-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1687+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16861688
inner.block_disconnected(
16871689
header, height, broadcaster, fee_estimator, &logger)
16881690
}
@@ -1710,7 +1712,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17101712
{
17111713
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17121714
let mut inner = self.inner.lock().unwrap();
1713-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1715+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17141716
inner.transactions_confirmed(
17151717
header, txdata, height, broadcaster, &bounded_fee_estimator, &logger)
17161718
}
@@ -1734,7 +1736,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17341736
{
17351737
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17361738
let mut inner = self.inner.lock().unwrap();
1737-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1739+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17381740
inner.transaction_unconfirmed(
17391741
txid, broadcaster, &bounded_fee_estimator, &logger
17401742
);
@@ -1762,7 +1764,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17621764
{
17631765
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17641766
let mut inner = self.inner.lock().unwrap();
1765-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1767+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17661768
inner.best_block_updated(
17671769
header, height, broadcaster, &bounded_fee_estimator, &logger
17681770
)
@@ -1802,7 +1804,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
18021804
{
18031805
let fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
18041806
let mut inner = self.inner.lock().unwrap();
1805-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1807+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
18061808
let current_height = inner.best_block.height;
18071809
inner.onchain_tx_handler.rebroadcast_pending_claims(
18081810
current_height, FeerateStrategy::HighestOfPreviousOrNew, &broadcaster, &fee_estimator, &logger,
@@ -1821,7 +1823,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
18211823
{
18221824
let fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
18231825
let mut inner = self.inner.lock().unwrap();
1824-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1826+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
18251827
let current_height = inner.best_block.height;
18261828
inner.onchain_tx_handler.rebroadcast_pending_claims(
18271829
current_height, FeerateStrategy::RetryPrevious, &broadcaster, &fee_estimator, &logger,
@@ -5260,7 +5262,8 @@ mod tests {
52605262
best_block, dummy_key, channel_id);
52615263

52625264
let chan_id = monitor.inner.lock().unwrap().channel_id();
5263-
let context_logger = WithChannelMonitor::from(&logger, &monitor);
5265+
let payment_hash = PaymentHash([1; 32]);
5266+
let context_logger = WithChannelMonitor::from(&logger, &monitor, Some(payment_hash));
52645267
log_error!(context_logger, "This is an error");
52655268
log_warn!(context_logger, "This is an error");
52665269
log_debug!(context_logger, "This is an error");

lightning/src/ln/channelmanager.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11633,7 +11633,7 @@ where
1163311633

1163411634
for (funding_txo, monitor) in args.channel_monitors.iter() {
1163511635
if !funding_txo_set.contains(funding_txo) {
11636-
let logger = WithChannelMonitor::from(&args.logger, monitor);
11636+
let logger = WithChannelMonitor::from(&args.logger, monitor, None);
1163711637
let channel_id = monitor.channel_id();
1163811638
log_info!(logger, "Queueing monitor update to ensure missing channel {} is force closed",
1163911639
&channel_id);
@@ -11940,8 +11940,8 @@ where
1194011940
for (_, monitor) in args.channel_monitors.iter() {
1194111941
let counterparty_opt = outpoint_to_peer.get(&monitor.get_funding_txo().0);
1194211942
if counterparty_opt.is_none() {
11943-
let logger = WithChannelMonitor::from(&args.logger, monitor);
1194411943
for (htlc_source, (htlc, _)) in monitor.get_pending_or_resolved_outbound_htlcs() {
11944+
let logger = WithChannelMonitor::from(&args.logger, monitor, Some(htlc.payment_hash));
1194511945
if let HTLCSource::OutboundRoute { payment_id, session_priv, path, .. } = htlc_source {
1194611946
if path.hops.is_empty() {
1194711947
log_error!(logger, "Got an empty path for a pending payment");
@@ -11982,6 +11982,7 @@ where
1198211982
}
1198311983
}
1198411984
for (htlc_source, (htlc, preimage_opt)) in monitor.get_all_current_outbound_htlcs() {
11985+
let logger = WithChannelMonitor::from(&args.logger, monitor, Some(htlc.payment_hash));
1198511986
match htlc_source {
1198611987
HTLCSource::PreviousHopData(prev_hop_data) => {
1198711988
let pending_forward_matches_htlc = |info: &PendingAddHTLCInfo| {

0 commit comments

Comments
 (0)