From 199bbe2fd4779f20823aef11005978f5fd427422 Mon Sep 17 00:00:00 2001 From: Olaoluwa Osuntokun Date: Mon, 16 Apr 2018 19:12:18 -0700 Subject: [PATCH] server: if remote peer knows of gossip queries, skip initial table dump --- server.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/server.go b/server.go index 31c5376a5..5a492e5b4 100644 --- a/server.go +++ b/server.go @@ -1787,10 +1787,30 @@ func (s *server) addPeer(p *peer) { s.wg.Add(1) go s.peerTerminationWatcher(p) + switch { + // If the remote peer knows of the new gossip queries feature, then + // we'll create a new gossipSyncer in the AuthenticatedGossiper for it. + case p.remoteLocalFeatures.HasFeature(lnwire.GossipQueriesOptional): + srvrLog.Infof("Negotiated chan series queries with %x", + p.pubKeyBytes[:]) + + // We'll only request channel updates from the remote peer if + // its enabled in the config, or we're already getting updates + // from enough peers. + // + // TODO(roasbeef): craft s.t. we only get updates from a few + // peers + recvUpdates := !cfg.NoChanUpdates + go s.authGossiper.InitSyncState(p.addr.IdentityKey, recvUpdates) + // If the remote peer has the initial sync feature bit set, then we'll // being the synchronization protocol to exchange authenticated channel - // graph edges/vertexes - if p.remoteLocalFeatures.HasFeature(lnwire.InitialRoutingSync) { + // graph edges/vertexes, but only if they don't know of the new gossip + // queries. + case p.remoteLocalFeatures.HasFeature(lnwire.InitialRoutingSync): + srvrLog.Infof("Requesting full table sync with %x", + p.pubKeyBytes[:]) + go s.authGossiper.SynchronizeNode(p.addr.IdentityKey) }