Commit Graph

24 Commits

Author SHA1 Message Date
Joost Jager
b760b25229 routing: limit routing info size during pathfinding
Also the max hop count check can be removed, because the real bound is
the payload size. By moving the check inside the search loop, we now
also backtrack when we hit the limit.
2019-12-20 11:00:05 +01:00
Conner Fromknecht
990d55d08c routing/pathfind: ensure final hop supports payment addrs
This commit adds an optional PaymentAddr field to the RestrictParams, so
that we can verify the final hop can support it before doing an
expensive round of pathfindig.
2019-12-18 23:54:31 -08:00
Joost Jager
31b2c22cf5 routing: check for invalid routes 2019-12-16 14:53:45 +01:00
Joost Jager
b8abae6a7e routing: rename route variable to prevent clash with package 2019-12-14 08:47:53 +01:00
Joost Jager
97344af8f3 routing: local balance check 2019-12-04 09:45:07 +01:00
Joost Jager
c15b0316a2 routing: use FailureReasonError for internal path finding errors 2019-11-27 15:21:12 +01:00
Joost Jager
a364d2cd82 routing: log route when payment attempt fails 2019-11-12 14:13:31 +01:00
Joost Jager
ff0c5a0d5e routing: process successes in mission control
This commit modifies paymentLifecycle so that it not only feeds
failures into mission control, but successes as well.
This allows for more accurate probability estimates. Previously,
the success probability for a successful pair and a pair with
no history was equal. There was no force that pushed towards
previously successful routes.
2019-08-23 09:15:41 +02:00
Joost Jager
e7af6a077a routing: convert to nillable failure reason
This commit converts several functions from returning a bool and a
failure reason to a nillable failure reason as return parameter. This
will take away confusion about the interpretation of the two separate
values.
2019-08-17 10:23:57 +02:00
Joost Jager
b4a7665bae routing: provide payment id to mission control 2019-07-29 09:38:32 +02:00
Joost Jager
8055bcf2e0 routing: report failures to mission control directly
As there is no more state kept in the payment session, failure reporting
can go straight to mission control.
2019-07-13 22:38:25 +02:00
Joost Jager
418fe364de htlcswitch: use distinct error for unreadable failures 2019-07-11 19:49:45 +02:00
Olaoluwa Osuntokun
ba5fbb3c27 Merge pull request #3156 from joostjager/extended-fail
routerrpc: add more failure reasons and route hints
2019-07-08 19:12:03 -07:00
Joost Jager
ae46fb00cb routing+channeldb: add more failure reasons 2019-07-04 09:27:12 +02:00
Johan T. Halseth
8b83f03308 rpcserver+router: log terminal sendPayment error 2019-07-01 16:22:57 -07:00
Joost Jager
2e920de292 routing+lnrpc: move default payment timeout out of router
This commit moves the default timeout out of router and thereby fixes a
bug that caused SendToRoute to not return the actual error, but a
timeout result instead. SendToRoute only tries a single route, so a
timeout should never happen.
2019-06-11 08:36:17 +02:00
Johan T. Halseth
2dea790b55 multi: make GetPaymentResult take payment hash
Used for logging in the switch, and when we remove the pending payments,
only the router will have the hash stored across restarts.
2019-06-07 16:53:32 +02:00
Joost Jager
0e273a5731 routing: return structured error for send to route 2019-05-29 14:06:58 +02:00
Johan T. Halseth
1b788904f0 channeldb+router: record payment failure reason in db 2019-05-27 20:18:59 +02:00
Johan T. Halseth
f4306b1178 routing/payment_session+router: make PaymentSession interface 2019-05-27 20:18:58 +02:00
Johan T. Halseth
de1bf8a518 routing/router: persist payment state machine
This commit makes the router use the ControlTower to drive the payment
life cycle state machine, to keep track of active payments across
restarts.  This lets the router resume payments on startup, such that
their final results can be handled and stored when ready.
2019-05-27 20:18:58 +02:00
Johan T. Halseth
dd73c51a34 routing/payment_lifecycle: extract create attempt into method 2019-05-27 20:18:58 +02:00
Johan T. Halseth
e9b2182cdc routing/payment_lifecycle: extract error handling into method 2019-05-27 20:18:58 +02:00
Johan T. Halseth
83bfaa4fb4 routing: extract payment flow into method on paymentLifecycle
This encapsulates all state needed to resume a payment from any point of
the payment flow, and that must be shared between the different stages
of the execution. This is done to prepare for breaking the send loop
into smaller parts, and being able to resume the payment from any point
from persistent state.
2019-05-27 20:18:57 +02:00