From 884f7928717394d631fbc8b721d8ee297f060e5b Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 27 Jan 2014 15:34:50 +0100 Subject: [PATCH] Removed default connection --- ethereum.go | 12 +++++++----- peer.go | 28 +++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/ethereum.go b/ethereum.go index 74e47d7bf..ac11903c0 100644 --- a/ethereum.go +++ b/ethereum.go @@ -152,12 +152,14 @@ func (s *Ethereum) Start() { if ethutil.Config.Debug { log.Println("Connection listening disabled. Acting as client") - err = s.ConnectToPeer("localhost:12345") - if err != nil { - log.Println("Error starting ethereum", err) + /* + err = s.ConnectToPeer("localhost:12345") + if err != nil { + log.Println("Error starting ethereum", err) - s.Stop() - } + s.Stop() + } + */ } else { log.Fatal(err) } diff --git a/peer.go b/peer.go index f370580cf..d2328c393 100644 --- a/peer.go +++ b/peer.go @@ -68,9 +68,12 @@ func NewOutboundPeer(addr string, ethereum *Ethereum) *Peer { // Set up the connection in another goroutine so we don't block the main thread go func() { - conn, err := net.Dial("tcp", addr) + conn, err := net.DialTimeout("tcp", addr, 30*time.Second) + if err != nil { + log.Println("Connection to peer failed", err) p.Stop() + return } p.conn = conn @@ -211,7 +214,30 @@ out: p.requestedPeerList = false } case ethwire.MsgGetChainTy: + blocksFound := 0 + l := msg.Data.Length() + // Check each SHA block hash from the message and determine whether + // the SHA is in the database + for i := 0; i < l; i++ { + if p.ethereum.BlockManager.BlockChain().HasBlock(msg.Data.Get(i).AsString()) { + blocksFound++ + // TODO send reply + } + } + // If no blocks are found we send back a reply with msg not in chain + // and the last hash from get chain + if blocksFound == 0 { + lastHash := msg.Data.Get(l - 1) + p.QueueMessage(ethwire.NewMessage(ethwire.MsgNotInChainTy, lastHash)) + } + case ethwire.MsgNotInChainTy: + log.Println("Not in chain, not yet implemented") + // TODO + + // Unofficial but fun nonetheless + case ethwire.MsgTalkTy: + log.Printf("%v says: %s\n", p.conn.RemoteAddr(), msg.Data.Get(0).AsString()) } }