Skip to content

Commit 5cc5c5d

Browse files
committed
Make PaymentFailureReason upgradable
This allows downgrading to version 0.0.124 or later and using None for a PaymentFailureReason that was added after.
1 parent b0f672f commit 5cc5c5d

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

lightning/src/events/mod.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,7 @@ pub enum PaymentFailureReason {
538538
InvoiceRequestRejected,
539539
}
540540

541-
impl_writeable_tlv_based_enum!(PaymentFailureReason,
541+
impl_writeable_tlv_based_enum_upgradable!(PaymentFailureReason,
542542
(0, RecipientRejected) => {},
543543
(1, UnknownRequiredFeatures) => {},
544544
(2, UserAbandoned) => {},
@@ -878,8 +878,9 @@ pub enum Event {
878878
/// [`Offer`]: crate::offers::offer::Offer
879879
payment_hash: Option<PaymentHash>,
880880
/// The reason the payment failed. This is only `None` for events generated or serialized
881-
/// by versions prior to 0.0.115 or when deserializing an `Event::InvoiceRequestFailed`,
882-
/// which was removed in 0.0.124.
881+
/// by versions prior to 0.0.115, when deserializing an `Event::InvoiceRequestFailed` (which
882+
/// was removed in 0.0.124), or when downgrading to 0.0.124 or later with a reason that was
883+
/// added after.
883884
reason: Option<PaymentFailureReason>,
884885
},
885886
/// Indicates that a path for an outbound payment was successful.
@@ -1940,7 +1941,7 @@ impl MaybeReadable for Event {
19401941
Ok(Some(Event::PaymentFailed {
19411942
payment_id,
19421943
payment_hash,
1943-
reason,
1944+
reason: _init_tlv_based_struct_field!(reason, upgradable_option),
19441945
}))
19451946
};
19461947
f()

lightning/src/ln/outbound_payment.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@ pub(crate) enum PendingOutboundPayment {
9696
Abandoned {
9797
session_privs: HashSet<[u8; 32]>,
9898
payment_hash: PaymentHash,
99-
/// Will be `None` if the payment was serialized before 0.0.115.
99+
/// Will be `None` if the payment was serialized before 0.0.115 or if downgrading to 0.0.124
100+
/// or later with a reason that was added after.
100101
reason: Option<PaymentFailureReason>,
101102
},
102103
}
@@ -1940,7 +1941,7 @@ impl_writeable_tlv_based_enum_upgradable!(PendingOutboundPayment,
19401941
},
19411942
(3, Abandoned) => {
19421943
(0, session_privs, required),
1943-
(1, reason, option),
1944+
(1, reason, upgradable_option),
19441945
(2, payment_hash, required),
19451946
},
19461947
(5, AwaitingInvoice) => {

0 commit comments

Comments
 (0)