Skip to content

Commit 7cf9094

Browse files
committed
f - return early in mark_abandoned if already abandoned
1 parent e9767e2 commit 7cf9094

File tree

1 file changed

+16
-21
lines changed

1 file changed

+16
-21
lines changed

lightning/src/ln/outbound_payment.rs

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -148,20 +148,21 @@ impl PendingOutboundPayment {
148148
}
149149

150150
fn mark_abandoned(&mut self, reason: PaymentFailureReason) -> Result<(), ()> {
151-
let mut session_privs = HashSet::new();
152-
let our_payment_hash;
153-
core::mem::swap(&mut session_privs, match self {
151+
match self {
154152
PendingOutboundPayment::Legacy { .. } |
155-
PendingOutboundPayment::Fulfilled { .. } =>
156-
return Err(()),
157-
PendingOutboundPayment::Retryable { session_privs, payment_hash, .. } |
158-
PendingOutboundPayment::Abandoned { session_privs, payment_hash, .. } => {
159-
our_payment_hash = *payment_hash;
160-
session_privs
153+
PendingOutboundPayment::Fulfilled { .. } => Err(()),
154+
PendingOutboundPayment::Retryable { session_privs, payment_hash, .. } => {
155+
let mut our_session_privs = HashSet::new();
156+
core::mem::swap(&mut our_session_privs, session_privs);
157+
*self = PendingOutboundPayment::Abandoned {
158+
session_privs: our_session_privs,
159+
payment_hash: *payment_hash,
160+
reason: Some(reason)
161+
};
162+
Ok(())
161163
},
162-
});
163-
*self = PendingOutboundPayment::Abandoned { session_privs, payment_hash: our_payment_hash, reason: Some(reason) };
164-
Ok(())
164+
PendingOutboundPayment::Abandoned { .. } => Ok(()),
165+
}
165166
}
166167

167168
/// panics if path is None and !self.is_fulfilled
@@ -548,9 +549,7 @@ impl OutboundPayments {
548549
outbounds.retain(|pmt_id, pmt| {
549550
let mut retain = true;
550551
if !pmt.is_auto_retryable_now() && pmt.remaining_parts() == 0 {
551-
if !pmt.abandoned() {
552-
let _ = pmt.mark_abandoned(PaymentFailureReason::RetriesExhausted);
553-
}
552+
let _ = pmt.mark_abandoned(PaymentFailureReason::RetriesExhausted);
554553
if let PendingOutboundPayment::Abandoned { payment_hash, reason, .. } = pmt {
555554
pending_events.lock().unwrap().push(events::Event::PaymentFailed {
556555
payment_id: *pmt_id,
@@ -668,9 +667,7 @@ impl OutboundPayments {
668667

669668
macro_rules! abandon_with_entry {
670669
($payment: expr, $reason: expr) => {
671-
if !$payment.get().abandoned() {
672-
let _ = $payment.get_mut().mark_abandoned($reason);
673-
}
670+
let _ = $payment.get_mut().mark_abandoned($reason);
674671
if let PendingOutboundPayment::Abandoned { reason, .. } = $payment.get() {
675672
if $payment.get().remaining_parts() == 0 {
676673
pending_events.lock().unwrap().push(events::Event::PaymentFailed {
@@ -1256,9 +1253,7 @@ impl OutboundPayments {
12561253
) {
12571254
let mut outbounds = self.pending_outbound_payments.lock().unwrap();
12581255
if let hash_map::Entry::Occupied(mut payment) = outbounds.entry(payment_id) {
1259-
if !payment.get().abandoned() {
1260-
let _ = payment.get_mut().mark_abandoned(reason);
1261-
}
1256+
let _ = payment.get_mut().mark_abandoned(reason);
12621257
if let PendingOutboundPayment::Abandoned { payment_hash, reason, .. } = payment.get() {
12631258
if payment.get().remaining_parts() == 0 {
12641259
pending_events.lock().unwrap().push(events::Event::PaymentFailed {

0 commit comments

Comments
 (0)