htlcswitch: add InterceptableSwitchConfig

Preparation for adding more config options.
This commit is contained in:
Joost Jager committed 2022-10-18 18:04:33 +02:00
1 parent 4fbd608b73
commit 4a3e90f4d0
4 files changed
+43 -12

No files matched your search

+19 -6
View File
@@ -111,19 +111,32 @@ type fwdResolution struct {
errChan chan error
}
// NewInterceptableSwitch returns an instance of InterceptableSwitch.
func NewInterceptableSwitch(s *Switch, cltvRejectDelta uint32,
requireInterceptor bool) *InterceptableSwitch {
// InterceptableSwitchConfig contains the configuration of InterceptableSwitch.
type InterceptableSwitchConfig struct {
// Switch is a reference to the actual switch implementation that
// packets get sent to on resume.
Switch *Switch
// CltvRejectDelta defines the number of blocks before the expiry of the
// htlc where we no longer intercept it and instead cancel it back.
CltvRejectDelta uint32
// RequireInterceptor indicates whether processing should block if no
// interceptor is connected.
RequireInterceptor bool
}
// NewInterceptableSwitch returns an instance of InterceptableSwitch.
func NewInterceptableSwitch(cfg *InterceptableSwitchConfig) *InterceptableSwitch {
return &InterceptableSwitch{
htlcSwitch: s,
htlcSwitch: cfg.Switch,
intercepted: make(chan *interceptedPackets),
onchainIntercepted: make(chan InterceptedForward),
interceptorRegistration: make(chan ForwardInterceptor),
holdForwards: make(map[channeldb.CircuitKey]InterceptedForward),
resolutionChan: make(chan *fwdResolution),
requireInterceptor: requireInterceptor,
cltvRejectDelta: cltvRejectDelta,
requireInterceptor: cfg.RequireInterceptor,
cltvRejectDelta: cfg.CltvRejectDelta,
quit: make(chan struct{}),
}
+16 -3
View File
@@ -3846,7 +3846,10 @@ func TestSwitchHoldForward(t *testing.T) {
interceptedChan: make(chan InterceptedPacket),
}
switchForwardInterceptor := NewInterceptableSwitch(
s, cltvRejectDelta, false,
&InterceptableSwitchConfig{
Switch: s,
CltvRejectDelta: cltvRejectDelta,
},
)
require.NoError(t, switchForwardInterceptor.Start())
@@ -4037,7 +4040,13 @@ func TestSwitchHoldForward(t *testing.T) {
require.NoError(t, switchForwardInterceptor.Stop())
// Test always-on interception.
switchForwardInterceptor = NewInterceptableSwitch(s, cltvRejectDelta, true)
switchForwardInterceptor = NewInterceptableSwitch(
&InterceptableSwitchConfig{
Switch: s,
CltvRejectDelta: cltvRejectDelta,
RequireInterceptor: true,
},
)
require.NoError(t, switchForwardInterceptor.Start())
// Forward a fresh packet. It is expected to be failed immediately,
@@ -5329,7 +5338,11 @@ func testSwitchAliasInterceptFail(t *testing.T, zeroConf bool) {
t: t,
interceptedChan: make(chan InterceptedPacket),
}
interceptSwitch := NewInterceptableSwitch(s, 0, false)
interceptSwitch := NewInterceptableSwitch(
&InterceptableSwitchConfig{
Switch: s,
},
)
require.NoError(t, interceptSwitch.Start())
interceptSwitch.SetInterceptor(forwardInterceptor.InterceptForwardHtlc)