aboutsummaryrefslogtreecommitdiffstats
path: root/p2p/peer.go
diff options
context:
space:
mode:
authorzelig <viktor.tron@gmail.com>2015-01-22 00:22:49 +0800
committerFelix Lange <fjl@twurst.com>2015-02-06 07:00:35 +0800
commitfaa069a126da29a246193713568634e5be6edd2d (patch)
tree2ee6f138ecc703f61df878678b787408b09e8b3f /p2p/peer.go
parent20aade56c3057a221d7fa7152a4969d5f8f980d5 (diff)
downloadgo-tangerine-faa069a126da29a246193713568634e5be6edd2d.tar.gz
go-tangerine-faa069a126da29a246193713568634e5be6edd2d.tar.zst
go-tangerine-faa069a126da29a246193713568634e5be6edd2d.zip
peer-level integration test for crypto handshake
- add const length params for handshake messages - add length check to fail early - add debug logs to help interop testing (!ABSOLUTELY SHOULD BE DELETED LATER) - wrap connection read/writes in error check - add cryptoReady channel in peer to signal when secure session setup is finished - wait for cryptoReady or timeout in TestPeersHandshake
Diffstat (limited to 'p2p/peer.go')
-rw-r--r--p2p/peer.go22
1 files changed, 13 insertions, 9 deletions
diff --git a/p2p/peer.go b/p2p/peer.go
index e44eaab34..818f80580 100644
--- a/p2p/peer.go
+++ b/p2p/peer.go
@@ -71,6 +71,7 @@ type Peer struct {
protocols []Protocol
runBaseProtocol bool // for testing
cryptoHandshake bool // for testing
+ cryptoReady chan struct{}
runlock sync.RWMutex // protects running
running map[string]*proto
@@ -120,15 +121,16 @@ func newServerPeer(server *Server, conn net.Conn, dialAddr *peerAddr) *Peer {
func newPeer(conn net.Conn, protocols []Protocol, dialAddr *peerAddr) *Peer {
p := &Peer{
- Logger: logger.NewLogger("P2P " + conn.RemoteAddr().String()),
- conn: conn,
- dialAddr: dialAddr,
- bufconn: bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)),
- protocols: protocols,
- running: make(map[string]*proto),
- disc: make(chan DiscReason),
- protoErr: make(chan error),
- closed: make(chan struct{}),
+ Logger: logger.NewLogger("P2P " + conn.RemoteAddr().String()),
+ conn: conn,
+ dialAddr: dialAddr,
+ bufconn: bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)),
+ protocols: protocols,
+ running: make(map[string]*proto),
+ disc: make(chan DiscReason),
+ protoErr: make(chan error),
+ closed: make(chan struct{}),
+ cryptoReady: make(chan struct{}),
}
return p
}
@@ -240,6 +242,7 @@ func (p *Peer) loop() (reason DiscReason, err error) {
go readLoop(readMsg, readErr, readNext)
readNext <- true
+ close(p.cryptoReady)
if p.runBaseProtocol {
p.startBaseProtocol()
}
@@ -353,6 +356,7 @@ func (p *Peer) handleCryptoHandshake() (loop readLoop, err error) {
// this bit handles the handshake and creates a secure communications channel with
// var rw *secretRW
if sessionToken, _, err = crypto.Run(p.conn, p.Pubkey(), sessionToken, initiator); err != nil {
+ p.Debugf("unable to setup secure session: %v", err)
return
}
loop = func(msg chan<- Msg, err chan<- error, next <-chan bool) {