diff --git a/routing/result_interpretation.go b/routing/result_interpretation.go index 1de2e128d..19c43e4a1 100644 --- a/routing/result_interpretation.go +++ b/routing/result_interpretation.go @@ -348,6 +348,10 @@ func (i *interpretedResult) processPaymentOutcomeIntermediate( reportOutgoing() + // All nodes up to the failing pair must have forwarded + // successfully. + i.successPairRange(route, 0, errorSourceIdx-1) + // If we get a permanent channel, we'll prune the channel set in both // directions and continue with the rest of the routes. case *lnwire.FailPermanentChannelFailure: diff --git a/routing/result_interpretation_test.go b/routing/result_interpretation_test.go index fff9eaa08..954f07981 100644 --- a/routing/result_interpretation_test.go +++ b/routing/result_interpretation_test.go @@ -362,6 +362,7 @@ var resultTestCases = []resultTestCase{ pairResults: map[DirectedNodePair]pairResult{ getTestPair(1, 2): failPairResult(0), getTestPair(2, 1): failPairResult(0), + getTestPair(0, 1): successPairResult(100), }, policyFailure: getPolicyFailure(1, 2), },