@@ -22,7 +22,7 @@ func startTestServer(t *testing.T, pf newPeerHook) *Server {
22
22
ListenAddr : "127.0.0.1:0" ,
23
23
PrivateKey : newkey (),
24
24
newPeerHook : pf ,
25
- setupFunc : func (fd net.Conn , prv * ecdsa.PrivateKey , our * protoHandshake , dial * discover.Node , atcap bool ) (* conn , error ) {
25
+ setupFunc : func (fd net.Conn , prv * ecdsa.PrivateKey , our * protoHandshake , dial * discover.Node , atcap bool , trusted map [discover. NodeID ] bool ) (* conn , error ) {
26
26
id := randomID ()
27
27
rw := newRlpxFrameRW (fd , secrets {
28
28
MAC : zero16 ,
@@ -200,7 +200,7 @@ func TestServerDisconnectAtCap(t *testing.T) {
200
200
// Run the handshakes just like a real peer would.
201
201
key := newkey ()
202
202
hs := & protoHandshake {Version : baseProtocolVersion , ID : discover .PubkeyID (& key .PublicKey )}
203
- _ , err = setupConn (conn , key , hs , srv .Self (), false )
203
+ _ , err = setupConn (conn , key , hs , srv .Self (), false , srv . trustedNodes )
204
204
if i == nconns - 1 {
205
205
// When handling the last connection, the server should
206
206
// disconnect immediately instead of running the protocol
@@ -250,7 +250,7 @@ func TestServerStaticPeers(t *testing.T) {
250
250
// Run the handshakes just like a real peer would, and wait for completion
251
251
key := newkey ()
252
252
shake := & protoHandshake {Version : baseProtocolVersion , ID : discover .PubkeyID (& key .PublicKey )}
253
- if _ , err = setupConn (conn , key , shake , server .Self (), false ); err != nil {
253
+ if _ , err = setupConn (conn , key , shake , server .Self (), false , server . trustedNodes ); err != nil {
254
254
t .Fatalf ("conn %d: unexpected error: %v" , i , err )
255
255
}
256
256
<- started
@@ -307,19 +307,24 @@ func TestServerStaticPeers(t *testing.T) {
307
307
}
308
308
}
309
309
310
- /*
311
310
// Tests that trusted peers and can connect above max peer caps.
312
311
func TestServerTrustedPeers (t * testing.T ) {
313
312
defer testlog (t ).detach ()
314
313
314
+ // Create a trusted peer to accept connections from
315
+ key := newkey ()
316
+ trusted := & discover.Node {
317
+ ID : discover .PubkeyID (& key .PublicKey ),
318
+ }
315
319
// Create a test server with limited connection slots
316
320
started := make (chan * Peer )
317
321
server := & Server {
318
- ListenAddr: "127.0.0.1:0",
319
- PrivateKey: newkey(),
320
- MaxPeers: 3,
321
- NoDial: true,
322
- newPeerHook: func(p *Peer) { started <- p },
322
+ ListenAddr : "127.0.0.1:0" ,
323
+ PrivateKey : newkey (),
324
+ MaxPeers : 3 ,
325
+ NoDial : true ,
326
+ TrustedNodes : []* discover.Node {trusted },
327
+ newPeerHook : func (p * Peer ) { started <- p },
323
328
}
324
329
if err := server .Start (); err != nil {
325
330
t .Fatal (err )
@@ -339,26 +344,20 @@ func TestServerTrustedPeers(t *testing.T) {
339
344
// Run the handshakes just like a real peer would, and wait for completion
340
345
key := newkey ()
341
346
shake := & protoHandshake {Version : baseProtocolVersion , ID : discover .PubkeyID (& key .PublicKey )}
342
- if _, err = setupConn(conn, key, shake, server.Self(), false); err != nil {
347
+ if _ , err = setupConn (conn , key , shake , server .Self (), false , server . trustedNodes ); err != nil {
343
348
t .Fatalf ("conn %d: unexpected error: %v" , i , err )
344
349
}
345
350
<- started
346
351
}
347
- // Inject a trusted node and dial that (we'll connect from this end, don't need IP setup)
348
- key := newkey()
349
- trusted := &discover.Node{
350
- ID: discover.PubkeyID(&key.PublicKey),
351
- }
352
- server.AddPeer(trusted)
353
-
352
+ // Dial from the trusted peer, ensure connection is accepted
354
353
conn , err := dialer .Dial ("tcp" , server .ListenAddr )
355
354
if err != nil {
356
355
t .Fatalf ("trusted node: dial error: %v" , err )
357
356
}
358
357
defer conn .Close ()
359
358
360
359
shake := & protoHandshake {Version : baseProtocolVersion , ID : trusted .ID }
361
- if _, err = setupConn(conn, key, shake, server.Self(), false); err != nil {
360
+ if _ , err = setupConn (conn , key , shake , server .Self (), false , server . trustedNodes ); err != nil {
362
361
t .Fatalf ("trusted node: unexpected error: %v" , err )
363
362
}
364
363
select {
@@ -369,7 +368,6 @@ func TestServerTrustedPeers(t *testing.T) {
369
368
t .Fatalf ("trusted node timeout" )
370
369
}
371
370
}
372
- */
373
371
374
372
func newkey () * ecdsa.PrivateKey {
375
373
key , err := crypto .GenerateKey ()
0 commit comments