routing: relax penalties for channel disabled errors
It was being considered a misbehaviour from the intermediate hop which penalized that hop, which is a bit harsh considering mobile nodes. We change it be considered as other channel update types and only penalize the channel that failed.
This commit is contained in:
1 parent
29a8661517
commit
78ce3abee5
2 files changed
+20
-2
No files matched your search
@@ -335,6 +335,19 @@ func (i *interpretedResult) processPaymentOutcomeIntermediate(
|
||||
case *lnwire.FailUnknownNextPeer:
|
||||
reportOutgoing()
|
||||
|
||||
// Some implementations use this error when the next hop is offline, so we
|
||||
// do the same as FailUnknownNextPeer and also process the channel update.
|
||||
case *lnwire.FailChannelDisabled:
|
||||
|
||||
// Set the node pair for which a channel update may be out of
|
||||
// date. The second chance logic uses the policyFailure field.
|
||||
i.policyFailure = &DirectedNodePair{
|
||||
From: route.Hops[errorSourceIdx-1].PubKeyBytes,
|
||||
To: route.Hops[errorSourceIdx].PubKeyBytes,
|
||||
}
|
||||
|
||||
reportOutgoing()
|
||||
|
||||
// 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:
|
||||
@@ -349,8 +362,7 @@ func (i *interpretedResult) processPaymentOutcomeIntermediate(
|
||||
// control.
|
||||
case *lnwire.FailAmountBelowMinimum,
|
||||
*lnwire.FailFeeInsufficient,
|
||||
*lnwire.FailIncorrectCltvExpiry,
|
||||
*lnwire.FailChannelDisabled:
|
||||
*lnwire.FailIncorrectCltvExpiry:
|
||||
|
||||
// Set the node pair for which a channel update may be out of
|
||||
// date. The second chance logic uses the policyFailure field.
|
||||
|
||||
Reference in new issue
Block a user