htlcswitch: use LinkError for internal errors
Update the ChannelLink interface to specifically return the LinkError struct. This error implements the ClearTextError interface, so will be picked up as a routing realted error by the router. With LinkErrors implemented, the switch now returns a LinkError for all failures on our incoming/outgoing link and ForwardingError when the failure occurs down the line.
This commit is contained in:
8 files changed
+185
-79
No files matched your search
+19
-10
@@ -1290,7 +1290,7 @@ func TestSwitchForwardCircuitPersistence(t *testing.T) {
|
||||
type multiHopFwdTest struct {
|
||||
name string
|
||||
eligible1, eligible2 bool
|
||||
failure1, failure2 lnwire.FailureMessage
|
||||
failure1, failure2 *LinkError
|
||||
expectedReply lnwire.FailCode
|
||||
}
|
||||
|
||||
@@ -1308,9 +1308,11 @@ func TestSkipIneligibleLinksMultiHopForward(t *testing.T) {
|
||||
// Channel one has a policy failure and the other channel isn't
|
||||
// available.
|
||||
{
|
||||
name: "policy fail",
|
||||
eligible1: true,
|
||||
failure1: lnwire.NewFinalIncorrectCltvExpiry(0),
|
||||
name: "policy fail",
|
||||
eligible1: true,
|
||||
failure1: NewLinkError(
|
||||
lnwire.NewFinalIncorrectCltvExpiry(0),
|
||||
),
|
||||
expectedReply: lnwire.CodeFinalIncorrectCltvExpiry,
|
||||
},
|
||||
|
||||
@@ -1325,11 +1327,16 @@ func TestSkipIneligibleLinksMultiHopForward(t *testing.T) {
|
||||
// The requested channel has insufficient bandwidth and the
|
||||
// other channel's policy isn't satisfied.
|
||||
{
|
||||
name: "non-strict policy fail",
|
||||
eligible1: true,
|
||||
failure1: lnwire.NewTemporaryChannelFailure(nil),
|
||||
eligible2: true,
|
||||
failure2: lnwire.NewFinalIncorrectCltvExpiry(0),
|
||||
name: "non-strict policy fail",
|
||||
eligible1: true,
|
||||
failure1: NewDetailedLinkError(
|
||||
lnwire.NewTemporaryChannelFailure(nil),
|
||||
FailureDetailInsufficientBalance,
|
||||
),
|
||||
eligible2: true,
|
||||
failure2: NewLinkError(
|
||||
lnwire.NewFinalIncorrectCltvExpiry(0),
|
||||
),
|
||||
expectedReply: lnwire.CodeTemporaryChannelFailure,
|
||||
},
|
||||
}
|
||||
@@ -1482,7 +1489,9 @@ func testSkipLinkLocalForward(t *testing.T, eligible bool,
|
||||
aliceChannelLink := newMockChannelLink(
|
||||
s, chanID1, aliceChanID, alicePeer, eligible,
|
||||
)
|
||||
aliceChannelLink.checkHtlcTransitResult = policyResult
|
||||
aliceChannelLink.checkHtlcTransitResult = NewLinkError(
|
||||
policyResult,
|
||||
)
|
||||
if err := s.AddLink(aliceChannelLink); err != nil {
|
||||
t.Fatalf("unable to add alice link: %v", err)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user