From 058459c65d4e77e8e353d1c68cbdd9718992bf91 Mon Sep 17 00:00:00 2001 From: anthdm Date: Fri, 26 Jan 2018 21:42:43 +0100 Subject: [PATCH] Added initiator field to peer to detect in the peer initiated the connected. --- pkg/network/peer.go | 10 +++++++--- pkg/network/server.go | 2 +- pkg/network/tcp.go | 10 ++++------ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/pkg/network/peer.go b/pkg/network/peer.go index 2dced35a6..64c3832ec 100644 --- a/pkg/network/peer.go +++ b/pkg/network/peer.go @@ -13,13 +13,16 @@ type Peer struct { send chan *Message // verack is true if this node has sended it's version. verack bool + // whether we or him made the initial connection. + initiator bool } // NewPeer returns a (TCP) Peer. -func NewPeer(conn net.Conn) *Peer { +func NewPeer(conn net.Conn, init bool) *Peer { return &Peer{ - conn: conn, - send: make(chan *Message), + conn: conn, + send: make(chan *Message), + initiator: init, } } @@ -35,6 +38,7 @@ func (p *Peer) writeLoop() { for { msg := <-p.send + rpcLogger.Printf("OUT :: %+v", msg) if err := msg.encode(p.conn); err != nil { log.Printf("encode error: %s", err) } diff --git a/pkg/network/server.go b/pkg/network/server.go index ce86db494..8d1496bac 100644 --- a/pkg/network/server.go +++ b/pkg/network/server.go @@ -125,7 +125,7 @@ func (s *Server) loop() { s.logger.Printf("peer registered from address %s", peer.conn.RemoteAddr()) // only respond with the version mesage if the peer initiated the connection. - if peer.initiater { + if peer.initiator { resp, err := s.handlePeerConnected() if err != nil { s.logger.Fatalf("handling initial peer connection failed: %s", err) diff --git a/pkg/network/tcp.go b/pkg/network/tcp.go index e417cfe14..408be9b06 100644 --- a/pkg/network/tcp.go +++ b/pkg/network/tcp.go @@ -1,7 +1,6 @@ package network import ( - "fmt" "io" "log" "net" @@ -18,12 +17,11 @@ func listenTCP(s *Server, port string) error { if err != nil { return err } - go handleConnection(s, conn) + go handleConnection(s, conn, true) } } func connectToSeeds(s *Server, addrs []string) { - fmt.Println(len(addrs)) for _, addr := range addrs { go func(addr string) { conn, err := net.Dial("tcp", addr) @@ -34,13 +32,13 @@ func connectToSeeds(s *Server, addrs []string) { } return } - go handleConnection(s, conn) + go handleConnection(s, conn, false) }(addr) } } -func handleConnection(s *Server, conn net.Conn) { - peer := NewPeer(conn) +func handleConnection(s *Server, conn net.Conn, initiated bool) { + peer := NewPeer(conn, initiated) s.register <- peer // remove the peer from connected peers and cleanup the connection.