From 24004fcb376e872ea53d418c320b63ea69548d43 Mon Sep 17 00:00:00 2001 From: "Johan T. Halseth" Date: Tue, 10 Sep 2019 14:37:18 +0200 Subject: [PATCH] gossiper+server: define SelfNodeAnnouncement --- discovery/gossiper.go | 6 ++++++ discovery/gossiper_test.go | 6 ++++++ server.go | 17 ++++++++++------- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/discovery/gossiper.go b/discovery/gossiper.go index 91ab4d5a..54d6bd96 100644 --- a/discovery/gossiper.go +++ b/discovery/gossiper.go @@ -147,6 +147,12 @@ type Config struct { // notification for when it reconnects. NotifyWhenOffline func(peerPubKey [33]byte) <-chan struct{} + // SelfNodeAnnouncement is a function that fetches our own current node + // announcement, for use when determining whether we should update our + // peers about our presence on the network. If the refresh is true, a + // new and updated announcement will be returned. + SelfNodeAnnouncement func(refresh bool) (lnwire.NodeAnnouncement, error) + // ProofMatureDelta the number of confirmations which is needed before // exchange the channel announcement proofs. ProofMatureDelta uint32 diff --git a/discovery/gossiper_test.go b/discovery/gossiper_test.go index 40d68054..62edd4fb 100644 --- a/discovery/gossiper_test.go +++ b/discovery/gossiper_test.go @@ -740,6 +740,11 @@ func createTestCtx(startHeight uint32) (*testCtx, func(), error) { c := make(chan struct{}) return c }, + SelfNodeAnnouncement: func(bool) (lnwire.NodeAnnouncement, error) { + return lnwire.NodeAnnouncement{ + Timestamp: testTimestamp, + }, nil + }, Router: router, TrickleDelay: trickleDelay, RetransmitTicker: ticker.NewForce(retransmitDelay), @@ -1492,6 +1497,7 @@ func TestSignatureAnnouncementRetryAtStartup(t *testing.T) { Broadcast: ctx.gossiper.cfg.Broadcast, NotifyWhenOnline: ctx.gossiper.reliableSender.cfg.NotifyWhenOnline, NotifyWhenOffline: ctx.gossiper.reliableSender.cfg.NotifyWhenOffline, + SelfNodeAnnouncement: ctx.gossiper.cfg.SelfNodeAnnouncement, Router: ctx.gossiper.cfg.Router, TrickleDelay: trickleDelay, RetransmitTicker: ticker.NewForce(retransmitDelay), diff --git a/server.go b/server.go index 1fff76a6..a002aab9 100644 --- a/server.go +++ b/server.go @@ -710,13 +710,16 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB, } s.authGossiper = discovery.New(discovery.Config{ - Router: s.chanRouter, - Notifier: s.cc.chainNotifier, - ChainHash: *activeNetParams.GenesisHash, - Broadcast: s.BroadcastMessage, - ChanSeries: chanSeries, - NotifyWhenOnline: s.NotifyWhenOnline, - NotifyWhenOffline: s.NotifyWhenOffline, + Router: s.chanRouter, + Notifier: s.cc.chainNotifier, + ChainHash: *activeNetParams.GenesisHash, + Broadcast: s.BroadcastMessage, + ChanSeries: chanSeries, + NotifyWhenOnline: s.NotifyWhenOnline, + NotifyWhenOffline: s.NotifyWhenOffline, + SelfNodeAnnouncement: func(refresh bool) (lnwire.NodeAnnouncement, error) { + return s.genNodeAnnouncement(refresh) + }, ProofMatureDelta: 0, TrickleDelay: time.Millisecond * time.Duration(cfg.TrickleDelay), RetransmitTicker: ticker.New(time.Minute * 30),