diff options
author | Daniel A. Nagy <nagy.da@gmail.com> | 2015-05-08 23:55:53 +0800 |
---|---|---|
committer | Daniel A. Nagy <nagy.da@gmail.com> | 2015-05-08 23:55:53 +0800 |
commit | 62dd9833ec768e2026bccb1cf7a8ef4263b9286d (patch) | |
tree | 0a091d99afd7f8cf5e3a6d4522c30ceef8559a55 /p2p/handshake.go | |
parent | 3a01e3e39b9ce83ecb7444319407ee8bb00e3bf6 (diff) | |
parent | c8fc4cebe63073fd77d5f553a4f0cec36a4ccb4b (diff) | |
download | dexon-62dd9833ec768e2026bccb1cf7a8ef4263b9286d.tar dexon-62dd9833ec768e2026bccb1cf7a8ef4263b9286d.tar.gz dexon-62dd9833ec768e2026bccb1cf7a8ef4263b9286d.tar.bz2 dexon-62dd9833ec768e2026bccb1cf7a8ef4263b9286d.tar.lz dexon-62dd9833ec768e2026bccb1cf7a8ef4263b9286d.tar.xz dexon-62dd9833ec768e2026bccb1cf7a8ef4263b9286d.tar.zst dexon-62dd9833ec768e2026bccb1cf7a8ef4263b9286d.zip |
Merge branch 'develop' of github.com:ethereum/go-ethereum into develop
Diffstat (limited to 'p2p/handshake.go')
-rw-r--r-- | p2p/handshake.go | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/p2p/handshake.go b/p2p/handshake.go index 8e611cfd5..4cdcee6d4 100644 --- a/p2p/handshake.go +++ b/p2p/handshake.go @@ -65,26 +65,26 @@ type protoHandshake struct { ID discover.NodeID } -// setupConn starts a protocol session on the given connection. -// It runs the encryption handshake and the protocol handshake. -// If dial is non-nil, the connection the local node is the initiator. -// If atcap is true, the connection will be disconnected with DiscTooManyPeers -// after the key exchange. -func setupConn(fd net.Conn, prv *ecdsa.PrivateKey, our *protoHandshake, dial *discover.Node, atcap bool, trusted map[discover.NodeID]bool) (*conn, error) { +// setupConn starts a protocol session on the given connection. It +// runs the encryption handshake and the protocol handshake. If dial +// is non-nil, the connection the local node is the initiator. If +// keepconn returns false, the connection will be disconnected with +// DiscTooManyPeers after the key exchange. +func setupConn(fd net.Conn, prv *ecdsa.PrivateKey, our *protoHandshake, dial *discover.Node, keepconn func(discover.NodeID) bool) (*conn, error) { if dial == nil { - return setupInboundConn(fd, prv, our, atcap, trusted) + return setupInboundConn(fd, prv, our, keepconn) } else { - return setupOutboundConn(fd, prv, our, dial, atcap, trusted) + return setupOutboundConn(fd, prv, our, dial, keepconn) } } -func setupInboundConn(fd net.Conn, prv *ecdsa.PrivateKey, our *protoHandshake, atcap bool, trusted map[discover.NodeID]bool) (*conn, error) { +func setupInboundConn(fd net.Conn, prv *ecdsa.PrivateKey, our *protoHandshake, keepconn func(discover.NodeID) bool) (*conn, error) { secrets, err := receiverEncHandshake(fd, prv, nil) if err != nil { return nil, fmt.Errorf("encryption handshake failed: %v", err) } rw := newRlpxFrameRW(fd, secrets) - if atcap && !trusted[secrets.RemoteID] { + if !keepconn(secrets.RemoteID) { SendItems(rw, discMsg, DiscTooManyPeers) return nil, errors.New("we have too many peers") } @@ -99,13 +99,13 @@ func setupInboundConn(fd net.Conn, prv *ecdsa.PrivateKey, our *protoHandshake, a return &conn{rw, rhs}, nil } -func setupOutboundConn(fd net.Conn, prv *ecdsa.PrivateKey, our *protoHandshake, dial *discover.Node, atcap bool, trusted map[discover.NodeID]bool) (*conn, error) { +func setupOutboundConn(fd net.Conn, prv *ecdsa.PrivateKey, our *protoHandshake, dial *discover.Node, keepconn func(discover.NodeID) bool) (*conn, error) { secrets, err := initiatorEncHandshake(fd, prv, dial.ID, nil) if err != nil { return nil, fmt.Errorf("encryption handshake failed: %v", err) } rw := newRlpxFrameRW(fd, secrets) - if atcap && !trusted[secrets.RemoteID] { + if !keepconn(secrets.RemoteID) { SendItems(rw, discMsg, DiscTooManyPeers) return nil, errors.New("we have too many peers") } |