From 50e096e627c8c07b4dda3a7221dda5f32dc5c5cb Mon Sep 17 00:00:00 2001 From: obscuren Date: Sat, 18 Apr 2015 23:56:08 +0200 Subject: [PATCH] downloader: don't remove peers. keep them around --- eth/downloader/downloader.go | 5 +++-- eth/handler.go | 11 +++++++++++ eth/protocol_test.go | 18 +++--------------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/eth/downloader/downloader.go b/eth/downloader/downloader.go index 2f98a14143..8f955b4836 100644 --- a/eth/downloader/downloader.go +++ b/eth/downloader/downloader.go @@ -176,6 +176,7 @@ out: var peer *peer = sync.peer err := d.getFromPeer(peer, sync.hash, sync.ignoreInitial) if err != nil { + glog.V(logger.Detail).Infoln(err) break } @@ -301,7 +302,7 @@ out: d.queue.reset() d.peers.reset() - return errPeersUnavailable + return fmt.Errorf("%v avaialable = %d. total = %d", errPeersUnavailable, len(availablePeers), len(d.peers)) } } else if len(d.queue.fetching) == 0 { @@ -321,7 +322,7 @@ out: if time.Since(chunk.itime) > blockTtl { badPeers = append(badPeers, pid) // remove peer as good peer from peer list - d.UnregisterPeer(pid) + //d.UnregisterPeer(pid) } } d.queue.mu.Unlock() diff --git a/eth/handler.go b/eth/handler.go index 749809175f..effe25ae37 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -185,7 +185,16 @@ func (self *ProtocolManager) handleMsg(p *peer) error { if request.Amount > maxHashes { request.Amount = maxHashes } + hashes := self.chainman.GetBlockHashesFromHash(request.Hash, request.Amount) + + if glog.V(logger.Debug) { + if len(hashes) == 0 { + glog.Infof("invalid block hash %x", request.Hash.Bytes()[:4]) + } + } + + // returns either requested hashes or nothing (i.e. not found) return p.sendBlockHashes(hashes) case BlockHashesMsg: msgStream := rlp.NewStream(msg.Payload) @@ -282,6 +291,7 @@ func (self *ProtocolManager) handleMsg(p *peer) error { return nil } self.BroadcastBlock(hash, request.Block) + fmt.Println(request.Block.Hash().Hex(), "our calculated TD =", request.Block.Td, "their TD =", request.TD) } else { // adding blocks is synchronous go func() { @@ -291,6 +301,7 @@ func (self *ProtocolManager) handleMsg(p *peer) error { return } self.BroadcastBlock(hash, request.Block) + fmt.Println(request.Block.Hash().Hex(), "our calculated TD =", request.Block.Td, "their TD =", request.TD) }() } default: diff --git a/eth/protocol_test.go b/eth/protocol_test.go index 7c724f7a78..d44f66b89d 100644 --- a/eth/protocol_test.go +++ b/eth/protocol_test.go @@ -1,20 +1,7 @@ package eth -import ( - "log" - "math/big" - "os" - "testing" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/ethereum/go-ethereum/errs" - ethlogger "github.com/ethereum/go-ethereum/logger" - "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/discover" -) +/* +TODO All of these tests need to be re-written var logsys = ethlogger.NewStdLogSystem(os.Stdout, log.LstdFlags, ethlogger.LogLevel(ethlogger.DebugDetailLevel)) @@ -398,3 +385,4 @@ func TestTransactionsMsg(t *testing.T) { eth.checkError(ErrDecode, delay) } +*/