Skip to content

Commit 3aa7c6b

Browse files
committed
Add payment_hash to WithChannelMonitor
1 parent dc13dce commit 3aa7c6b

File tree

3 files changed

+29
-25
lines changed

3 files changed

+29
-25
lines changed

lightning/src/chain/chainmonitor.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ where C::Target: chain::Filter,
359359
process: FN, funding_outpoint: &OutPoint, monitor_state: &MonitorHolder<ChannelSigner>
360360
) -> Result<(), ()> where FN: Fn(&ChannelMonitor<ChannelSigner>, &TransactionData) -> Vec<TransactionOutputs> {
361361
let monitor = &monitor_state.monitor;
362-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
362+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
363363
let mut txn_outputs;
364364
{
365365
txn_outputs = process(monitor, txdata);
@@ -744,7 +744,7 @@ where C::Target: chain::Filter,
744744
P::Target: Persist<ChannelSigner>,
745745
{
746746
fn watch_channel(&self, funding_outpoint: OutPoint, monitor: ChannelMonitor<ChannelSigner>) -> Result<ChannelMonitorUpdateStatus, ()> {
747-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
747+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
748748
let mut monitors = self.monitors.write().unwrap();
749749
let entry = match monitors.entry(funding_outpoint) {
750750
hash_map::Entry::Occupied(_) => {
@@ -803,7 +803,7 @@ where C::Target: chain::Filter,
803803
},
804804
Some(monitor_state) => {
805805
let monitor = &monitor_state.monitor;
806-
let logger = WithChannelMonitor::from(&self.logger, &monitor);
806+
let logger = WithChannelMonitor::from(&self.logger, &monitor, None);
807807
log_trace!(logger, "Updating ChannelMonitor for channel {}", log_funding_info!(monitor));
808808
let update_res = monitor.update_monitor(update, &self.broadcaster, &self.fee_estimator, &self.logger);
809809

@@ -851,7 +851,7 @@ where C::Target: chain::Filter,
851851
fn release_pending_monitor_events(&self) -> Vec<(OutPoint, ChannelId, Vec<MonitorEvent>, Option<PublicKey>)> {
852852
let mut pending_monitor_events = self.pending_monitor_events.lock().unwrap().split_off(0);
853853
for monitor_state in self.monitors.read().unwrap().values() {
854-
let logger = WithChannelMonitor::from(&self.logger, &monitor_state.monitor);
854+
let logger = WithChannelMonitor::from(&self.logger, &monitor_state.monitor, None);
855855
let is_pending_monitor_update = monitor_state.has_pending_chainsync_updates(&monitor_state.pending_monitor_updates.lock().unwrap());
856856
if !is_pending_monitor_update || monitor_state.last_chain_persist_height.load(Ordering::Acquire) + LATENCY_GRACE_PERIOD_BLOCKS as usize <= self.highest_chain_height.load(Ordering::Acquire) {
857857
if is_pending_monitor_update {

lightning/src/chain/channelmonitor.rs

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1190,26 +1190,28 @@ pub(crate) struct WithChannelMonitor<'a, L: Deref> where L::Target: Logger {
11901190
logger: &'a L,
11911191
peer_id: Option<PublicKey>,
11921192
channel_id: Option<ChannelId>,
1193+
payment_hash: Option<PaymentHash>,
11931194
}
11941195

11951196
impl<'a, L: Deref> Logger for WithChannelMonitor<'a, L> where L::Target: Logger {
11961197
fn log(&self, mut record: Record) {
11971198
record.peer_id = self.peer_id;
11981199
record.channel_id = self.channel_id;
1200+
record.payment_hash = self.payment_hash;
11991201
self.logger.log(record)
12001202
}
12011203
}
12021204

12031205
impl<'a, L: Deref> WithChannelMonitor<'a, L> where L::Target: Logger {
1204-
pub(crate) fn from<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor: &ChannelMonitor<S>) -> Self {
1205-
Self::from_impl(logger, &*monitor.inner.lock().unwrap())
1206+
pub(crate) fn from<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor: &ChannelMonitor<S>, payment_hash: Option<PaymentHash>) -> Self {
1207+
Self::from_impl(logger, &*monitor.inner.lock().unwrap(), payment_hash)
12061208
}
12071209

1208-
pub(crate) fn from_impl<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor_impl: &ChannelMonitorImpl<S>) -> Self {
1210+
pub(crate) fn from_impl<S: WriteableEcdsaChannelSigner>(logger: &'a L, monitor_impl: &ChannelMonitorImpl<S>, payment_hash: Option<PaymentHash>) -> Self {
12091211
let peer_id = monitor_impl.counterparty_node_id;
12101212
let channel_id = Some(monitor_impl.channel_id());
12111213
WithChannelMonitor {
1212-
logger, peer_id, channel_id,
1214+
logger, peer_id, channel_id, payment_hash,
12131215
}
12141216
}
12151217
}
@@ -1350,7 +1352,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
13501352
where L::Target: Logger
13511353
{
13521354
let mut inner = self.inner.lock().unwrap();
1353-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1355+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
13541356
inner.provide_initial_counterparty_commitment_tx(txid,
13551357
htlc_outputs, commitment_number, their_cur_per_commitment_point, feerate_per_kw,
13561358
to_broadcaster_value_sat, to_countersignatory_value_sat, &logger);
@@ -1370,7 +1372,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
13701372
logger: &L,
13711373
) where L::Target: Logger {
13721374
let mut inner = self.inner.lock().unwrap();
1373-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1375+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
13741376
inner.provide_latest_counterparty_commitment_tx(
13751377
txid, htlc_outputs, commitment_number, their_per_commitment_point, &logger)
13761378
}
@@ -1398,7 +1400,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
13981400
L::Target: Logger,
13991401
{
14001402
let mut inner = self.inner.lock().unwrap();
1401-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1403+
let logger = WithChannelMonitor::from_impl(logger, &*inner, Some(*payment_hash));
14021404
inner.provide_payment_preimage(
14031405
payment_hash, payment_preimage, broadcaster, fee_estimator, &logger)
14041406
}
@@ -1420,7 +1422,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14201422
L::Target: Logger,
14211423
{
14221424
let mut inner = self.inner.lock().unwrap();
1423-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1425+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
14241426
inner.update_monitor(updates, broadcaster, fee_estimator, &logger)
14251427
}
14261428

@@ -1455,7 +1457,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14551457
F::Target: chain::Filter, L::Target: Logger,
14561458
{
14571459
let lock = self.inner.lock().unwrap();
1458-
let logger = WithChannelMonitor::from_impl(logger, &*lock);
1460+
let logger = WithChannelMonitor::from_impl(logger, &*lock, None);
14591461
log_trace!(&logger, "Registering funding outpoint {}", &lock.get_funding_txo().0);
14601462
filter.register_tx(&lock.get_funding_txo().0.txid, &lock.get_funding_txo().1);
14611463
for (txid, outputs) in lock.get_outputs_to_watch().iter() {
@@ -1615,7 +1617,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16151617
{
16161618
let mut inner = self.inner.lock().unwrap();
16171619
let fee_estimator = LowerBoundedFeeEstimator::new(&**fee_estimator);
1618-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1620+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16191621
inner.queue_latest_holder_commitment_txn_for_broadcast(broadcaster, &fee_estimator, &logger);
16201622
}
16211623

@@ -1626,7 +1628,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16261628
pub fn unsafe_get_latest_holder_commitment_txn<L: Deref>(&self, logger: &L) -> Vec<Transaction>
16271629
where L::Target: Logger {
16281630
let mut inner = self.inner.lock().unwrap();
1629-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1631+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16301632
inner.unsafe_get_latest_holder_commitment_txn(&logger)
16311633
}
16321634

@@ -1656,7 +1658,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16561658
L::Target: Logger,
16571659
{
16581660
let mut inner = self.inner.lock().unwrap();
1659-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1661+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16601662
inner.block_connected(
16611663
header, txdata, height, broadcaster, fee_estimator, &logger)
16621664
}
@@ -1676,7 +1678,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
16761678
L::Target: Logger,
16771679
{
16781680
let mut inner = self.inner.lock().unwrap();
1679-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1681+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
16801682
inner.block_disconnected(
16811683
header, height, broadcaster, fee_estimator, &logger)
16821684
}
@@ -1704,7 +1706,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17041706
{
17051707
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17061708
let mut inner = self.inner.lock().unwrap();
1707-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1709+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17081710
inner.transactions_confirmed(
17091711
header, txdata, height, broadcaster, &bounded_fee_estimator, &logger)
17101712
}
@@ -1728,7 +1730,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17281730
{
17291731
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17301732
let mut inner = self.inner.lock().unwrap();
1731-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1733+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17321734
inner.transaction_unconfirmed(
17331735
txid, broadcaster, &bounded_fee_estimator, &logger
17341736
);
@@ -1756,7 +1758,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17561758
{
17571759
let bounded_fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17581760
let mut inner = self.inner.lock().unwrap();
1759-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1761+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
17601762
inner.best_block_updated(
17611763
header, height, broadcaster, &bounded_fee_estimator, &logger
17621764
)
@@ -1796,7 +1798,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
17961798
{
17971799
let fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
17981800
let mut inner = self.inner.lock().unwrap();
1799-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1801+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
18001802
let current_height = inner.best_block.height;
18011803
inner.onchain_tx_handler.rebroadcast_pending_claims(
18021804
current_height, FeerateStrategy::HighestOfPreviousOrNew, &broadcaster, &fee_estimator, &logger,
@@ -1815,7 +1817,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
18151817
{
18161818
let fee_estimator = LowerBoundedFeeEstimator::new(fee_estimator);
18171819
let mut inner = self.inner.lock().unwrap();
1818-
let logger = WithChannelMonitor::from_impl(logger, &*inner);
1820+
let logger = WithChannelMonitor::from_impl(logger, &*inner, None);
18191821
let current_height = inner.best_block.height;
18201822
inner.onchain_tx_handler.rebroadcast_pending_claims(
18211823
current_height, FeerateStrategy::RetryPrevious, &broadcaster, &fee_estimator, &logger,
@@ -5199,7 +5201,8 @@ mod tests {
51995201
best_block, dummy_key, channel_id);
52005202

52015203
let chan_id = monitor.inner.lock().unwrap().channel_id();
5202-
let context_logger = WithChannelMonitor::from(&logger, &monitor);
5204+
let payment_hash = PaymentHash([1; 32]);
5205+
let context_logger = WithChannelMonitor::from(&logger, &monitor, Some(payment_hash));
52035206
log_error!(context_logger, "This is an error");
52045207
log_warn!(context_logger, "This is an error");
52055208
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
@@ -10694,7 +10694,7 @@ where
1069410694

1069510695
for (funding_txo, monitor) in args.channel_monitors.iter() {
1069610696
if !funding_txo_set.contains(funding_txo) {
10697-
let logger = WithChannelMonitor::from(&args.logger, monitor);
10697+
let logger = WithChannelMonitor::from(&args.logger, monitor, None);
1069810698
let channel_id = monitor.channel_id();
1069910699
log_info!(logger, "Queueing monitor update to ensure missing channel {} is force closed",
1070010700
&channel_id);
@@ -10997,8 +10997,8 @@ where
1099710997
for (_, monitor) in args.channel_monitors.iter() {
1099810998
let counterparty_opt = outpoint_to_peer.get(&monitor.get_funding_txo().0);
1099910999
if counterparty_opt.is_none() {
11000-
let logger = WithChannelMonitor::from(&args.logger, monitor);
1100111000
for (htlc_source, (htlc, _)) in monitor.get_pending_or_resolved_outbound_htlcs() {
11001+
let logger = WithChannelMonitor::from(&args.logger, monitor, Some(htlc.payment_hash));
1100211002
if let HTLCSource::OutboundRoute { payment_id, session_priv, path, .. } = htlc_source {
1100311003
if path.hops.is_empty() {
1100411004
log_error!(logger, "Got an empty path for a pending payment");
@@ -11039,6 +11039,7 @@ where
1103911039
}
1104011040
}
1104111041
for (htlc_source, (htlc, preimage_opt)) in monitor.get_all_current_outbound_htlcs() {
11042+
let logger = WithChannelMonitor::from(&args.logger, monitor, Some(htlc.payment_hash));
1104211043
match htlc_source {
1104311044
HTLCSource::PreviousHopData(prev_hop_data) => {
1104411045
let pending_forward_matches_htlc = |info: &PendingAddHTLCInfo| {

0 commit comments

Comments
 (0)