downloader: don't remove peers. keep them around

pull/749/head
obscuren 10 years ago
parent 03b4cf74a2
commit 50e096e627
  1. 5
      eth/downloader/downloader.go
  2. 11
      eth/handler.go
  3. 18
      eth/protocol_test.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()

@ -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:

@ -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)
}
*/

Loading…
Cancel
Save