From 19d5f8f82c112dec3428005f08c890c024ec2f29 Mon Sep 17 00:00:00 2001 From: Joost Jager Date: Thu, 18 Apr 2019 09:45:21 +0200 Subject: [PATCH] routing: move default cltv assignment out of router This commit lifts default setting up to the rpc server level, in line with other payment defaults. --- lnrpc/routerrpc/router_server.go | 2 +- routing/payment_session_test.go | 2 +- routing/router.go | 15 +++------------ rpcserver.go | 13 ++++++------- 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/lnrpc/routerrpc/router_server.go b/lnrpc/routerrpc/router_server.go index 9f1ca208..3a5ad276 100644 --- a/lnrpc/routerrpc/router_server.go +++ b/lnrpc/routerrpc/router_server.go @@ -222,7 +222,7 @@ func (s *Server) SendPayment(ctx context.Context, Amount: *payReq.MilliSat, FeeLimit: lnwire.MilliSatoshi(req.FeeLimitSat), PaymentHash: *payReq.PaymentHash, - FinalCLTVDelta: &finalDelta, + FinalCLTVDelta: finalDelta, PayAttemptTimeout: time.Second * time.Duration(req.TimeoutSeconds), RouteHints: payReq.RouteHints, } diff --git a/routing/payment_session_test.go b/routing/payment_session_test.go index a8748a62..a5ee7889 100644 --- a/routing/payment_session_test.go +++ b/routing/payment_session_test.go @@ -45,7 +45,7 @@ func TestRequestRoute(t *testing.T) { payment := &LightningPayment{ CltvLimit: &cltvLimit, - FinalCLTVDelta: &finalCltvDelta, + FinalCLTVDelta: finalCltvDelta, } route, err := session.RequestRoute(payment, height, finalCltvDelta) diff --git a/routing/router.go b/routing/router.go index a28a1118..88c894b7 100644 --- a/routing/router.go +++ b/routing/router.go @@ -1565,10 +1565,8 @@ type LightningPayment struct { // FinalCLTVDelta is the CTLV expiry delta to use for the _final_ hop // in the route. This means that the final hop will have a CLTV delta - // of at least: currentHeight + FinalCLTVDelta. If this value is - // unspecified, then a default value of DefaultFinalCLTVDelta will be - // used. - FinalCLTVDelta *uint16 + // of at least: currentHeight + FinalCLTVDelta. + FinalCLTVDelta uint16 // PayAttemptTimeout is a timeout value that we'll use to determine // when we should should abandon the payment attempt after consecutive @@ -1732,13 +1730,6 @@ func (r *ChannelRouter) sendPayment( return [32]byte{}, nil, err } - var finalCLTVDelta uint16 - if payment.FinalCLTVDelta == nil { - finalCLTVDelta = zpay32.DefaultFinalCLTVDelta - } else { - finalCLTVDelta = *payment.FinalCLTVDelta - } - var payAttemptTimeout time.Duration if payment.PayAttemptTimeout == time.Duration(0) { payAttemptTimeout = defaultPayAttemptTimeout @@ -1756,7 +1747,7 @@ func (r *ChannelRouter) sendPayment( paySession: paySession, timeoutChan: timeoutChan, currentHeight: currentHeight, - finalCLTVDelta: finalCLTVDelta, + finalCLTVDelta: uint16(payment.FinalCLTVDelta), attempt: existingAttempt, circuit: nil, lastError: nil, diff --git a/rpcserver.go b/rpcserver.go index 66992551..5258c623 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -2998,7 +2998,11 @@ func extractPaymentIntent(rpcPayReq *rpcPaymentRequest) (rpcPaymentIntent, error rpcPayReq.FeeLimit, payIntent.msat, ) - payIntent.cltvDelta = uint16(rpcPayReq.FinalCltvDelta) + if rpcPayReq.FinalCltvDelta != 0 { + payIntent.cltvDelta = uint16(rpcPayReq.FinalCltvDelta) + } else { + payIntent.cltvDelta = zpay32.DefaultFinalCLTVDelta + } // If the user is manually specifying payment details, then the payment // hash may be encoded as a string. @@ -3069,6 +3073,7 @@ func (r *rpcServer) dispatchPaymentIntent( payment := &routing.LightningPayment{ Target: payIntent.dest, Amount: payIntent.msat, + FinalCLTVDelta: payIntent.cltvDelta, FeeLimit: payIntent.feeLimit, CltvLimit: payIntent.cltvLimit, PaymentHash: payIntent.rHash, @@ -3077,12 +3082,6 @@ func (r *rpcServer) dispatchPaymentIntent( PaymentRequest: payIntent.payReq, } - // If the final CLTV value was specified, then we'll use that - // rather than the default. - if payIntent.cltvDelta != 0 { - payment.FinalCLTVDelta = &payIntent.cltvDelta - } - preImage, route, routerErr = r.server.chanRouter.SendPayment( payment, )