eth: request id dispatcher and direct req/reply APIs (#23576)
* eth: request ID based message dispatcher * eth: fix dispatcher cancellation, rework fetchers idleness tracker * eth/downloader: drop peers who refuse to serve advertised chains
This commit is contained in:
10
p2p/peer.go
10
p2p/peer.go
@ -121,10 +121,18 @@ type Peer struct {
|
||||
|
||||
// NewPeer returns a peer for testing purposes.
|
||||
func NewPeer(id enode.ID, name string, caps []Cap) *Peer {
|
||||
// Generate a fake set of local protocols to match as running caps. Almost
|
||||
// no fields needs to be meaningful here as we're only using it to cross-
|
||||
// check with the "remote" caps array.
|
||||
protos := make([]Protocol, len(caps))
|
||||
for i, cap := range caps {
|
||||
protos[i].Name = cap.Name
|
||||
protos[i].Version = cap.Version
|
||||
}
|
||||
pipe, _ := net.Pipe()
|
||||
node := enode.SignNull(new(enr.Record), id)
|
||||
conn := &conn{fd: pipe, transport: nil, node: node, caps: caps, name: name}
|
||||
peer := newPeer(log.Root(), conn, nil)
|
||||
peer := newPeer(log.Root(), conn, protos)
|
||||
close(peer.closed) // ensures Disconnect doesn't block
|
||||
return peer
|
||||
}
|
||||
|
Reference in New Issue
Block a user