aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZsolt Felfoldi <zsfelfoldi@gmail.com>2017-01-26 09:52:59 +0800
committerZsolt Felfoldi <zsfelfoldi@gmail.com>2017-01-27 09:52:45 +0800
commita390ca5f30e871715f28937a02e87fff050b0c75 (patch)
tree9940f968f72ba14817f11a75b9dd172ea2d6f56e
parent12379c697aa72f4ce08733638e6f7e5dcdf3f94f (diff)
downloaddexon-a390ca5f30e871715f28937a02e87fff050b0c75.tar.gz
dexon-a390ca5f30e871715f28937a02e87fff050b0c75.tar.zst
dexon-a390ca5f30e871715f28937a02e87fff050b0c75.zip
les, cmd/util: disable topic discovery with --nodiscover
-rw-r--r--cmd/utils/flags.go8
-rw-r--r--les/serverpool.go12
2 files changed, 15 insertions, 5 deletions
diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go
index 4b76b8334..9ba33df80 100644
--- a/cmd/utils/flags.go
+++ b/cmd/utils/flags.go
@@ -654,6 +654,10 @@ func MakeNode(ctx *cli.Context, name, gitCommit string) *node.Node {
vsn += "-" + gitCommit[:8]
}
+ // if we're running a light client or server, force enable the v5 peer discovery unless it is explicitly disabled with --nodiscover
+ // note that explicitly specifying --v5disc overrides --nodiscover, in which case the later only disables v4 discovery
+ forceV5Discovery := (ctx.GlobalBool(LightModeFlag.Name) || ctx.GlobalInt(LightServFlag.Name) > 0) && !ctx.GlobalBool(NoDiscoverFlag.Name)
+
config := &node.Config{
DataDir: MakeDataDir(ctx),
KeyStoreDir: ctx.GlobalString(KeyStoreDirFlag.Name),
@@ -662,8 +666,8 @@ func MakeNode(ctx *cli.Context, name, gitCommit string) *node.Node {
Name: name,
Version: vsn,
UserIdent: makeNodeUserIdent(ctx),
- NoDiscovery: ctx.GlobalBool(NoDiscoverFlag.Name) || ctx.GlobalBool(LightModeFlag.Name),
- DiscoveryV5: ctx.GlobalBool(DiscoveryV5Flag.Name) || ctx.GlobalBool(LightModeFlag.Name) || ctx.GlobalInt(LightServFlag.Name) > 0,
+ NoDiscovery: ctx.GlobalBool(NoDiscoverFlag.Name) || ctx.GlobalBool(LightModeFlag.Name), // always disable v4 discovery in light client mode
+ DiscoveryV5: ctx.GlobalBool(DiscoveryV5Flag.Name) || forceV5Discovery,
DiscoveryV5Addr: MakeDiscoveryV5Address(ctx),
BootstrapNodes: MakeBootstrapNodes(ctx),
BootstrapNodesV5: MakeBootstrapNodesV5(ctx),
diff --git a/les/serverpool.go b/les/serverpool.go
index 68e962c97..9735a718e 100644
--- a/les/serverpool.go
+++ b/les/serverpool.go
@@ -348,7 +348,9 @@ func (pool *serverPool) selectPeerWait(reqID uint64, canSend func(*peer) (bool,
func (pool *serverPool) eventLoop() {
lookupCnt := 0
var convTime mclock.AbsTime
- pool.discSetPeriod <- time.Millisecond * 100
+ if pool.discSetPeriod != nil {
+ pool.discSetPeriod <- time.Millisecond * 100
+ }
for {
select {
case entry := <-pool.timeout:
@@ -393,12 +395,16 @@ func (pool *serverPool) eventLoop() {
lookupCnt++
if pool.fastDiscover && (lookupCnt == 50 || time.Duration(mclock.Now()-convTime) > time.Minute) {
pool.fastDiscover = false
- pool.discSetPeriod <- time.Minute
+ if pool.discSetPeriod != nil {
+ pool.discSetPeriod <- time.Minute
+ }
}
}
case <-pool.quit:
- close(pool.discSetPeriod)
+ if pool.discSetPeriod != nil {
+ close(pool.discSetPeriod)
+ }
pool.connWg.Wait()
pool.saveNodes()
pool.wg.Done()