aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/server.go
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2016-11-09 10:09:05 +0800
committerGitHub <noreply@github.com>2016-11-09 10:09:05 +0800
commit355f4b0c15fadec683877b5de1361bd678fee28e (patch)
treeef1c3a915af7f07c049c08318fe450b2ecf46654 /p2p/server.go
parent8b1df1a259fe6dc4c15e391e9c0762c9621d9d72 (diff)
parentbbb5e5d56a51d9430aec934c76a0bd02f1f2427d (diff)
downloaddexon-355f4b0c15fadec683877b5de1361bd678fee28e.tar
dexon-355f4b0c15fadec683877b5de1361bd678fee28e.tar.gz
dexon-355f4b0c15fadec683877b5de1361bd678fee28e.tar.bz2
dexon-355f4b0c15fadec683877b5de1361bd678fee28e.tar.lz
dexon-355f4b0c15fadec683877b5de1361bd678fee28e.tar.xz
dexon-355f4b0c15fadec683877b5de1361bd678fee28e.tar.zst
dexon-355f4b0c15fadec683877b5de1361bd678fee28e.zip
Merge pull request #3232 from zsfelfoldi/light-topic3
Diffstat (limited to 'p2p/server.go')
-rw-r--r--p2p/server.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/p2p/server.go b/p2p/server.go
index 8e3cd93f9..649fbfb82 100644
--- a/p2p/server.go
+++ b/p2p/server.go
@@ -28,6 +28,7 @@ import (
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/logger/glog"
"github.com/ethereum/go-ethereum/p2p/discover"
+ "github.com/ethereum/go-ethereum/p2p/discv5"
"github.com/ethereum/go-ethereum/p2p/nat"
)
@@ -72,6 +73,8 @@ type Config struct {
// or not. Disabling is usually useful for protocol debugging (manual topology).
Discovery bool
+ DiscoveryV5 bool
+
// Name sets the node name of this server.
// Use common.MakeName to create a name that follows existing conventions.
Name string
@@ -105,6 +108,8 @@ type Config struct {
// the server is started.
ListenAddr string
+ ListenAddrV5 string
+
// If set to a non-nil value, the given NAT port mapper
// is used to make the listening port available to the
// Internet.
@@ -135,6 +140,7 @@ type Server struct {
listener net.Listener
ourHandshake *protoHandshake
lastLookup time.Time
+ DiscV5 *discv5.Network
// These are for Peers, PeerCount (and nothing else).
peerOp chan peerOpFunc
@@ -352,6 +358,17 @@ func (srv *Server) Start() (err error) {
srv.ntab = ntab
}
+ if srv.DiscoveryV5 {
+ ntab, err := discv5.ListenUDP(srv.PrivateKey, srv.ListenAddrV5, srv.NAT, "") //srv.NodeDatabase)
+ if err != nil {
+ return err
+ }
+ if err := ntab.SetFallbackNodes(discv5.BootNodes); err != nil {
+ return err
+ }
+ srv.DiscV5 = ntab
+ }
+
dynPeers := (srv.MaxPeers + 1) / 2
if !srv.Discovery {
dynPeers = 0
@@ -527,6 +544,9 @@ running:
if srv.ntab != nil {
srv.ntab.Close()
}
+ if srv.DiscV5 != nil {
+ srv.DiscV5.Close()
+ }
// Disconnect all peers.
for _, p := range peers {
p.Disconnect(DiscQuitting)