htlcswitch: add InterceptableSwitchConfig
Preparation for adding more config options.
This commit is contained in:
4 files changed
+43
-12
No files matched your search
@@ -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{}),
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in new issue
Block a user