@@ -60,9 +60,9 @@ type Server struct {
60
60
// with the rest of the network.
61
61
BootstrapNodes []* discover.Node
62
62
63
- // Trusted nodes are used as privileged connections which are always accepted
64
- // and also always maintained .
65
- TrustedNodes []* discover.Node
63
+ // Static nodes are used as pre-configured connections which are always
64
+ // maintained and re-connected on disconnects .
65
+ StaticNodes []* discover.Node
66
66
67
67
// NodeDatabase is the path to the database containing the previously seen
68
68
// live nodes in the network.
@@ -100,11 +100,11 @@ type Server struct {
100
100
101
101
ourHandshake * protoHandshake
102
102
103
- lock sync.RWMutex // protects running, peers and the trust fields
104
- running bool
105
- peers map [discover.NodeID ]* Peer
106
- trusts map [discover.NodeID ]* discover.Node // Map of currently trusted remote nodes
107
- trustDial chan * discover.Node // Dial request channel reserved for the trusted nodes
103
+ lock sync.RWMutex // protects running, peers and the trust fields
104
+ running bool
105
+ peers map [discover.NodeID ]* Peer
106
+ statics map [discover.NodeID ]* discover.Node // Map of currently static remote nodes
107
+ staticDial chan * discover.Node // Dial request channel reserved for the static nodes
108
108
109
109
ntab * discover.Table
110
110
listener net.Listener
@@ -114,7 +114,7 @@ type Server struct {
114
114
peerWG sync.WaitGroup // active peer goroutines
115
115
}
116
116
117
- type setupFunc func (net.Conn , * ecdsa.PrivateKey , * protoHandshake , * discover.Node , bool , map [ discover . NodeID ] bool ) (* conn , error )
117
+ type setupFunc func (net.Conn , * ecdsa.PrivateKey , * protoHandshake , * discover.Node , bool ) (* conn , error )
118
118
type newPeerHook func (* Peer )
119
119
120
120
// Peers returns all connected peers.
@@ -144,7 +144,7 @@ func (srv *Server) AddPeer(node *discover.Node) {
144
144
srv .lock .Lock ()
145
145
defer srv .lock .Unlock ()
146
146
147
- srv .trusts [node .ID ] = node
147
+ srv .statics [node .ID ] = node
148
148
}
149
149
150
150
// Broadcast sends an RLP-encoded message to all connected peers.
@@ -207,11 +207,11 @@ func (srv *Server) Start() (err error) {
207
207
srv .peers = make (map [discover.NodeID ]* Peer )
208
208
209
209
// Create the current trust map, and the associated dialing channel
210
- srv .trusts = make (map [discover.NodeID ]* discover.Node )
211
- for _ , node := range srv .TrustedNodes {
212
- srv .trusts [node .ID ] = node
210
+ srv .statics = make (map [discover.NodeID ]* discover.Node )
211
+ for _ , node := range srv .StaticNodes {
212
+ srv .statics [node .ID ] = node
213
213
}
214
- srv .trustDial = make (chan * discover.Node )
214
+ srv .staticDial = make (chan * discover.Node )
215
215
216
216
if srv .setupFunc == nil {
217
217
srv .setupFunc = setupConn
@@ -246,8 +246,8 @@ func (srv *Server) Start() (err error) {
246
246
if srv .NoDial && srv .ListenAddr == "" {
247
247
glog .V (logger .Warn ).Infoln ("I will be kind-of useless, neither dialing nor listening." )
248
248
}
249
- // maintain the trusted peers
250
- go srv .trustedNodesLoop ()
249
+ // maintain the static peers
250
+ go srv .staticNodesLoop ()
251
251
252
252
srv .running = true
253
253
return nil
@@ -342,20 +342,20 @@ func (srv *Server) listenLoop() {
342
342
}
343
343
}
344
344
345
- // trustedNodesLoop is responsible for periodically checking that trusted
345
+ // staticNodesLoop is responsible for periodically checking that static
346
346
// connections are actually live, and requests dialing if not.
347
- func (srv * Server ) trustedNodesLoop () {
347
+ func (srv * Server ) staticNodesLoop () {
348
348
tick := time .Tick (trustedPeerCheckInterval )
349
349
for {
350
350
select {
351
351
case <- srv .quit :
352
352
return
353
353
354
354
case <- tick :
355
- // Collect all the non-connected trusted nodes
355
+ // Collect all the non-connected static nodes
356
356
needed := []* discover.Node {}
357
357
srv .lock .RLock ()
358
- for id , node := range srv .trusts {
358
+ for id , node := range srv .statics {
359
359
if _ , ok := srv .peers [id ]; ! ok {
360
360
needed = append (needed , node )
361
361
}
@@ -364,9 +364,9 @@ func (srv *Server) trustedNodesLoop() {
364
364
365
365
// Try to dial each of them (don't hang if server terminates)
366
366
for _ , node := range needed {
367
- glog .V (logger .Debug ).Infof ("Dialing trusted peer %v" , node )
367
+ glog .V (logger .Debug ).Infof ("Dialing static peer %v" , node )
368
368
select {
369
- case srv .trustDial <- node :
369
+ case srv .staticDial <- node :
370
370
case <- srv .quit :
371
371
return
372
372
}
@@ -425,7 +425,7 @@ func (srv *Server) dialLoop() {
425
425
// below MaxPeers.
426
426
refresh .Reset (refreshPeersInterval )
427
427
}
428
- case dest := <- srv .trustDial :
428
+ case dest := <- srv .staticDial :
429
429
dial (dest )
430
430
case dests := <- findresults :
431
431
for _ , dest := range dests {
@@ -469,17 +469,17 @@ func (srv *Server) startPeer(fd net.Conn, dest *discover.Node) {
469
469
// the callers of startPeer added the peer to the wait group already.
470
470
fd .SetDeadline (time .Now ().Add (handshakeTimeout ))
471
471
472
- // Check capacity and trust list
472
+ // Check capacity, but override for static nodes
473
473
srv .lock .RLock ()
474
474
atcap := len (srv .peers ) == srv .MaxPeers
475
-
476
- trust := make ( map [discover. NodeID ] bool )
477
- for id , _ := range srv . trusts {
478
- trust [ id ] = true
475
+ if dest != nil {
476
+ if _ , ok := srv . statics [ dest . ID ]; ok {
477
+ atcap = false
478
+ }
479
479
}
480
480
srv .lock .RUnlock ()
481
481
482
- conn , err := srv .setupFunc (fd , srv .PrivateKey , srv .ourHandshake , dest , atcap , trust )
482
+ conn , err := srv .setupFunc (fd , srv .PrivateKey , srv .ourHandshake , dest , atcap )
483
483
if err != nil {
484
484
fd .Close ()
485
485
glog .V (logger .Debug ).Infof ("Handshake with %v failed: %v" , fd .RemoteAddr (), err )
@@ -535,14 +535,14 @@ func (srv *Server) addPeer(id discover.NodeID, p *Peer) (bool, DiscReason) {
535
535
// checkPeer verifies whether a peer looks promising and should be allowed/kept
536
536
// in the pool, or if it's of no use.
537
537
func (srv * Server ) checkPeer (id discover.NodeID ) (bool , DiscReason ) {
538
- // First up, figure out if the peer is trusted
539
- _ , trusted := srv .trusts [id ]
538
+ // First up, figure out if the peer is static
539
+ _ , static := srv .statics [id ]
540
540
541
541
// Make sure the peer passes all required checks
542
542
switch {
543
543
case ! srv .running :
544
544
return false , DiscQuitting
545
- case ! trusted && len (srv .peers ) >= srv .MaxPeers :
545
+ case ! static && len (srv .peers ) >= srv .MaxPeers :
546
546
return false , DiscTooManyPeers
547
547
case srv .peers [id ] != nil :
548
548
return false , DiscAlreadyConnected
0 commit comments