Merge pull request #1145 from tnull/add_gossip_log_level
[rust-lightning] / lightning / src / util / events.rs
index c021fe3c16b9dda30f7b8a75189d3785323fe2a2..29d294c5cbd11066391eb5950655226ae2dd97e0 100644 (file)
@@ -16,6 +16,7 @@
 
 use chain::keysinterface::SpendableOutputDescriptor;
 use ln::channelmanager::PaymentId;
+use ln::channel::FUNDING_CONF_DEADLINE_BLOCKS;
 use ln::msgs;
 use ln::msgs::DecodeError;
 use ln::{PaymentPreimage, PaymentHash, PaymentSecret};
@@ -59,15 +60,6 @@ pub enum PaymentPurpose {
                /// [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
                /// [`ChannelManager::create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
                payment_secret: PaymentSecret,
-               /// This is the `user_payment_id` which was provided to
-               /// [`ChannelManager::create_inbound_payment_for_hash`] or
-               /// [`ChannelManager::create_inbound_payment`]. It has no meaning inside of LDK and is
-               /// simply copied here. It may be used to correlate PaymentReceived events with invoice
-               /// metadata stored elsewhere.
-               ///
-               /// [`ChannelManager::create_inbound_payment`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment
-               /// [`ChannelManager::create_inbound_payment_for_hash`]: crate::ln::channelmanager::ChannelManager::create_inbound_payment_for_hash
-               user_payment_id: u64,
        },
        /// Because this is a spontaneous payment, the payer generated their own preimage rather than us
        /// (the payee) providing a preimage.
@@ -101,6 +93,8 @@ pub enum ClosureReason {
        /// commitment transaction came from our counterparty, but it may also have come from
        /// a copy of our own `ChannelMonitor`.
        CommitmentTxConfirmed,
+       /// The funding transaction failed to confirm in a timely manner on an inbound channel.
+       FundingTimedOut,
        /// Closure generated from processing an event, likely a HTLC forward/relay/reception.
        ProcessingError {
                /// A developer-readable error message which we generated.
@@ -129,6 +123,7 @@ impl core::fmt::Display for ClosureReason {
                        ClosureReason::HolderForceClosed => f.write_str("user manually force-closed the channel"),
                        ClosureReason::CooperativeClosure => f.write_str("the channel was cooperatively closed"),
                        ClosureReason::CommitmentTxConfirmed => f.write_str("commitment or closing transaction was confirmed on chain."),
+                       ClosureReason::FundingTimedOut => write!(f, "funding transaction failed to confirm within {} blocks", FUNDING_CONF_DEADLINE_BLOCKS),
                        ClosureReason::ProcessingError { err } => {
                                f.write_str("of an exception: ")?;
                                f.write_str(&err)
@@ -141,6 +136,7 @@ impl core::fmt::Display for ClosureReason {
 
 impl_writeable_tlv_based_enum_upgradable!(ClosureReason,
        (0, CounterpartyForceClosed) => { (1, peer_msg, required) },
+       (1, FundingTimedOut) => {},
        (2, HolderForceClosed) => {},
        (6, CommitmentTxConfirmed) => {},
        (4, CooperativeClosure) => {},
@@ -347,13 +343,11 @@ impl Writeable for Event {
                        &Event::PaymentReceived { ref payment_hash, ref amt, ref purpose } => {
                                1u8.write(writer)?;
                                let mut payment_secret = None;
-                               let mut user_payment_id = None;
                                let payment_preimage;
                                match &purpose {
-                                       PaymentPurpose::InvoicePayment { payment_preimage: preimage, payment_secret: secret, user_payment_id: id } => {
+                                       PaymentPurpose::InvoicePayment { payment_preimage: preimage, payment_secret: secret } => {
                                                payment_secret = Some(secret);
                                                payment_preimage = *preimage;
-                                               user_payment_id = Some(id);
                                        },
                                        PaymentPurpose::SpontaneousPayment(preimage) => {
                                                payment_preimage = Some(*preimage);
@@ -363,7 +357,7 @@ impl Writeable for Event {
                                        (0, payment_hash, required),
                                        (2, payment_secret, option),
                                        (4, amt, required),
-                                       (6, user_payment_id, option),
+                                       (6, 0u64, required), // user_payment_id required for compatibility with 0.0.103 and earlier
                                        (8, payment_preimage, option),
                                });
                        },
@@ -452,21 +446,18 @@ impl MaybeReadable for Event {
                                        let mut payment_preimage = None;
                                        let mut payment_secret = None;
                                        let mut amt = 0;
-                                       let mut user_payment_id = None;
+                                       let mut _user_payment_id = None; // For compatibility with 0.0.103 and earlier
                                        read_tlv_fields!(reader, {
                                                (0, payment_hash, required),
                                                (2, payment_secret, option),
                                                (4, amt, required),
-                                               (6, user_payment_id, option),
+                                               (6, _user_payment_id, option),
                                                (8, payment_preimage, option),
                                        });
                                        let purpose = match payment_secret {
                                                Some(secret) => PaymentPurpose::InvoicePayment {
                                                        payment_preimage,
-                                                       payment_secret: secret,
-                                                       user_payment_id: if let Some(id) = user_payment_id {
-                                                               id
-                                                       } else { return Err(msgs::DecodeError::InvalidValue) }
+                                                       payment_secret: secret
                                                },
                                                None if payment_preimage.is_some() => PaymentPurpose::SpontaneousPayment(payment_preimage.unwrap()),
                                                None => return Err(msgs::DecodeError::InvalidValue),