Skip to content

Commit 4350290

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 9bb3f1e commit 4350290

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.
@@ -1934,7 +1935,7 @@ impl MaybeReadable for Event {
19341935
Ok(Some(Event::PaymentFailed {
19351936
payment_id,
19361937
payment_hash: invoice_received.then(|| payment_hash),
1937-
reason,
1938+
reason: _init_tlv_based_struct_field!(reason, upgradable_option),
19381939
}))
19391940
};
19401941
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)