diff --git a/contractcourt/chain_arbitrator.go b/contractcourt/chain_arbitrator.go index 3bfbafa1..db401735 100644 --- a/contractcourt/chain_arbitrator.go +++ b/contractcourt/chain_arbitrator.go @@ -105,7 +105,7 @@ type ChainArbitratorConfig struct { // absolute/relative item block. IncubateOutputs func(wire.OutPoint, *lnwallet.CommitOutputResolution, *lnwallet.OutgoingHtlcResolution, - *lnwallet.IncomingHtlcResolution) error + *lnwallet.IncomingHtlcResolution, uint32) error // PreimageDB is a global store of all known pre-images. We'll use this // to decide if we should broadcast a commitment transaction to claim diff --git a/contractcourt/channel_arbitrator.go b/contractcourt/channel_arbitrator.go index 55a6e238..ae3fe967 100644 --- a/contractcourt/channel_arbitrator.go +++ b/contractcourt/channel_arbitrator.go @@ -648,7 +648,7 @@ func (c *ChannelArbitrator) stateStep(triggerHeight uint32, err = c.cfg.IncubateOutputs( c.cfg.ChanPoint, commitRes, - nil, nil, + nil, nil, triggerHeight, ) if err != nil { // TODO(roasbeef): check for AlreadyExists errors diff --git a/contractcourt/contract_resolvers.go b/contractcourt/contract_resolvers.go index 7b8be486..3ecc6be9 100644 --- a/contractcourt/contract_resolvers.go +++ b/contractcourt/contract_resolvers.go @@ -152,7 +152,10 @@ func (h *htlcTimeoutResolver) Resolve() (ContractResolver, error) { log.Tracef("%T(%v): incubating htlc output", h, h.htlcResolution.ClaimOutpoint) - err := h.IncubateOutputs(h.ChanPoint, nil, &h.htlcResolution, nil) + err := h.IncubateOutputs( + h.ChanPoint, nil, &h.htlcResolution, nil, + h.broadcastHeight, + ) if err != nil { return nil, err } @@ -568,7 +571,10 @@ func (h *htlcSuccessResolver) Resolve() (ContractResolver, error) { log.Infof("%T(%x): incubating incoming htlc output", h, h.payHash[:]) - err := h.IncubateOutputs(h.ChanPoint, nil, nil, &h.htlcResolution) + err := h.IncubateOutputs( + h.ChanPoint, nil, nil, &h.htlcResolution, + h.broadcastHeight, + ) if err != nil { return nil, err } diff --git a/server.go b/server.go index 525d6d31..4c9ce4c0 100644 --- a/server.go +++ b/server.go @@ -628,7 +628,8 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB, cc *chainControl, IncubateOutputs: func(chanPoint wire.OutPoint, commitRes *lnwallet.CommitOutputResolution, outHtlcRes *lnwallet.OutgoingHtlcResolution, - inHtlcRes *lnwallet.IncomingHtlcResolution) error { + inHtlcRes *lnwallet.IncomingHtlcResolution, + broadcastHeight uint32) error { var ( inRes []lnwallet.IncomingHtlcResolution @@ -643,6 +644,7 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB, cc *chainControl, return s.utxoNursery.IncubateOutputs( chanPoint, commitRes, outRes, inRes, + broadcastHeight, ) }, PreimageDB: s.witnessBeacon, diff --git a/utxonursery.go b/utxonursery.go index f3bf362e..5c801dce 100644 --- a/utxonursery.go +++ b/utxonursery.go @@ -343,7 +343,8 @@ func (u *utxoNursery) Stop() error { func (u *utxoNursery) IncubateOutputs(chanPoint wire.OutPoint, commitResolution *lnwallet.CommitOutputResolution, outgoingHtlcs []lnwallet.OutgoingHtlcResolution, - incomingHtlcs []lnwallet.IncomingHtlcResolution) error { + incomingHtlcs []lnwallet.IncomingHtlcResolution, + broadcastHeight uint32) error { numHtlcs := len(incomingHtlcs) + len(outgoingHtlcs) var ( @@ -469,7 +470,9 @@ func (u *utxoNursery) IncubateOutputs(chanPoint wire.OutPoint, // kindergarten bucket. if len(kidOutputs) != 0 { for _, kidOutput := range kidOutputs { - err := u.registerPreschoolConf(&kidOutput, u.bestHeight) + err := u.registerPreschoolConf( + &kidOutput, broadcastHeight, + ) if err != nil { return err } diff --git a/utxonursery_test.go b/utxonursery_test.go index adff6d3e..5410a55f 100644 --- a/utxonursery_test.go +++ b/utxonursery_test.go @@ -336,6 +336,8 @@ func init() { } func TestKidOutputSerialization(t *testing.T) { + t.Parallel() + for i, kid := range kidOutputs { var b bytes.Buffer if err := kid.Encode(&b); err != nil { @@ -358,6 +360,8 @@ func TestKidOutputSerialization(t *testing.T) { } func TestBabyOutputSerialization(t *testing.T) { + t.Parallel() + for i, baby := range babyOutputs { var b bytes.Buffer if err := baby.Encode(&b); err != nil {