Skip to content

Commit

Permalink
Merge pull request #8874 from ellemouton/assumeTLV2
Browse files Browse the repository at this point in the history
routing: remove left over TLV feature bit checks
  • Loading branch information
guggero authored Jun 27, 2024
2 parents ce81327 + 3ceb7d5 commit c34c042
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 62 deletions.
1 change: 1 addition & 0 deletions docs/release-notes/release-notes-0.18.2.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,5 @@
* Bufo
* Elle Mouton
* Matheus Degiovani
* Oliver Gugger
* Slyghtning
26 changes: 4 additions & 22 deletions routing/pathfind.go
Original file line number Diff line number Diff line change
Expand Up @@ -543,34 +543,16 @@ func findPath(g *graphParams, r *RestrictParams, cfg *PathFindingConfig,
return nil, 0, errMissingDependentFeature
}

// Now that we know the feature vector is well formed, we'll proceed in
// checking that it supports the features we need, given our
// restrictions on the final hop.

// If the caller needs to send custom records, check that our
// destination feature vector supports TLV.
if len(r.DestCustomRecords) > 0 &&
!features.HasFeature(lnwire.TLVOnionPayloadOptional) {

return nil, 0, errNoTlvPayload
}

// If the caller has a payment address to attach, check that our
// destination feature vector supports them.
// Now that we know the feature vector is well-formed, we'll proceed in
// checking that it supports the features we need. If the caller has a
// payment address to attach, check that our destination feature vector
// supports them.
if r.PaymentAddr != nil &&
!features.HasFeature(lnwire.PaymentAddrOptional) {

return nil, 0, errNoPaymentAddr
}

// If the caller needs to send custom records, check that our
// destination feature vector supports TLV.
if r.Metadata != nil &&
!features.HasFeature(lnwire.TLVOnionPayloadOptional) {

return nil, 0, errNoTlvPayload
}

// Set up outgoing channel map for quicker access.
var outgoingChanMap map[uint64]struct{}
if len(r.OutgoingChannelIDs) > 0 {
Expand Down
40 changes: 0 additions & 40 deletions routing/pathfind_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -882,13 +882,6 @@ func runFindPathWithMetadata(t *testing.T, useCache bool) {

_, err = ctx.findPath(target, paymentAmt)
require.ErrorIs(t, errNoPathFound, err)

// Assert that tlv payload support takes precedence over metadata
// issues.
ctx.restrictParams.DestFeatures = lnwire.EmptyFeatureVector()

_, err = ctx.findPath(target, paymentAmt)
require.ErrorIs(t, errNoTlvPayload, err)
}

// runFindLowestFeePath tests that out of two routes with identical total
Expand Down Expand Up @@ -1261,20 +1254,6 @@ func runPathFindingWithAdditionalEdges(t *testing.T, useCache bool) {
restrictions := *noRestrictions
restrictions.DestCustomRecords = record.CustomSet{70000: []byte{}}

_, err = find(&restrictions)
if err != errNoTlvPayload {
t.Fatalf("path shouldn't have been found: %v", err)
}

// Set empty dest features so we don't try the fallback. We should still
// fail since the tlv feature isn't set.
restrictions.DestFeatures = lnwire.EmptyFeatureVector()

_, err = find(&restrictions)
if err != errNoTlvPayload {
t.Fatalf("path shouldn't have been found: %v", err)
}

// Finally, set the tlv feature in the payload and assert we found the
// same path as before.
restrictions.DestFeatures = tlvFeatures
Expand Down Expand Up @@ -1775,31 +1754,12 @@ func runDestTLVGraphFallback(t *testing.T, useCache bool) {
// Add custom records w/o any dest features.
restrictions.DestCustomRecords = record.CustomSet{70000: []byte{}}

// Path to luoji should fail because his node ann features are empty.
_, err = find(&restrictions, luoji)
if err != errNoTlvPayload {
t.Fatalf("path shouldn't have been found: %v", err)
}

// However, path to satoshi should succeed via the fallback because his
// node ann features have the TLV bit.
path, err := find(&restrictions, satoshi)
require.NoError(t, err, "path should have been found")
assertExpectedPath(t, ctx.testGraphInstance.aliasMap, path, "satoshi")

// Add empty destination features. This should cause both paths to fail,
// since this override anything in the graph.
restrictions.DestFeatures = lnwire.EmptyFeatureVector()

_, err = find(&restrictions, luoji)
if err != errNoTlvPayload {
t.Fatalf("path shouldn't have been found: %v", err)
}
_, err = find(&restrictions, satoshi)
if err != errNoTlvPayload {
t.Fatalf("path shouldn't have been found: %v", err)
}

// Finally, set the TLV dest feature. We should succeed in finding a
// path to luoji.
restrictions.DestFeatures = tlvFeatures
Expand Down

0 comments on commit c34c042

Please sign in to comment.