From 869fcdb4666fafbf1b4a9d90fd7fec3aba9ac298 Mon Sep 17 00:00:00 2001 From: rkfg Date: Sun, 11 Sep 2022 17:36:10 +0300 Subject: [PATCH] Respect min amount when picking channels --- channels.go | 6 +++++- main.go | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/channels.go b/channels.go index a4c2c93..465475b 100644 --- a/channels.go +++ b/channels.go @@ -76,7 +76,7 @@ func min(args ...int64) (result int64) { return } -func (r *regolancer) pickChannelPair(amount int64) (from uint64, to uint64, maxAmount int64, err error) { +func (r *regolancer) pickChannelPair(amount, minAmount int64) (from uint64, to uint64, maxAmount int64, err error) { if len(r.channelPairs) == 0 { if !r.routeFound { return 0, 0, 0, errors.New("no routes") @@ -107,6 +107,10 @@ func (r *regolancer) pickChannelPair(amount int64) (from uint64, to uint64, maxA } else { maxAmount = min(maxFrom, maxTo, amount) } + if maxAmount < minAmount { + r.addFailedRoute(fromChan.ChanId, toChan.ChanId) + return r.pickChannelPair(amount, minAmount) + } for k, v := range r.failureCache { if v.expiration.Before(time.Now()) { r.channelPairs[k] = v.channelPair diff --git a/main.go b/main.go index 353894b..5e53fec 100644 --- a/main.go +++ b/main.go @@ -86,7 +86,7 @@ func loadConfig() { func tryRebalance(ctx context.Context, r *regolancer, invoice **lnrpc.AddInvoiceResponse, attempt *int) (err error, repeat bool) { - from, to, amt, err := r.pickChannelPair(params.Amount) + from, to, amt, err := r.pickChannelPair(params.Amount, params.MinAmount) if err != nil { log.Printf(errColor("Error during picking channel: %s"), err) return err, false