routing: payment splitting pre-check
This commit reverts cb4cd49dc8 to bring
back the insufficient local balance failure.
Distinguishing betweeen this failure and a regular "no route" failure
prevents meaningless htlcs from being sent out.
This commit is contained in:
5 files changed
+63
-18
No files matched your search
@@ -30,6 +30,10 @@ const (
|
||||
// not exist in the graph.
|
||||
errNoPathFound
|
||||
|
||||
// errInsufficientLocalBalance is returned when none of the local
|
||||
// channels have enough balance for the payment.
|
||||
errInsufficientBalance
|
||||
|
||||
// errEmptyPaySession is returned when the empty payment session is
|
||||
// queried for a route.
|
||||
errEmptyPaySession
|
||||
@@ -57,6 +61,9 @@ func (e noRouteError) Error() string {
|
||||
case errEmptyPaySession:
|
||||
return "empty payment session"
|
||||
|
||||
case errInsufficientBalance:
|
||||
return "insufficient local balance"
|
||||
|
||||
default:
|
||||
return "unknown no-route error"
|
||||
}
|
||||
@@ -73,6 +80,9 @@ func (e noRouteError) FailureReason() channeldb.FailureReason {
|
||||
|
||||
return channeldb.FailureReasonNoRoute
|
||||
|
||||
case errInsufficientBalance:
|
||||
return channeldb.FailureReasonInsufficientBalance
|
||||
|
||||
default:
|
||||
return channeldb.FailureReasonError
|
||||
}
|
||||
@@ -278,6 +288,16 @@ func (p *paymentSession) RequestRoute(maxAmt, feeLimit lnwire.MilliSatoshi,
|
||||
// Go pathfinding.
|
||||
continue
|
||||
|
||||
// If there isn't enough local bandwidth, there is no point in
|
||||
// splitting. It won't be possible to create a complete set in
|
||||
// any case, but the sent out partial payments would be held by
|
||||
// the receiver until the mpp timeout.
|
||||
case err == errInsufficientBalance:
|
||||
p.log.Debug("not splitting because local balance " +
|
||||
"is insufficient")
|
||||
|
||||
return nil, err
|
||||
|
||||
case err != nil:
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user