Merge branch 'develop' of github.com-obscure:ethereum/go-ethereum into develop
This commit is contained in:
@ -42,6 +42,9 @@ type Config struct {
|
||||
ProtocolVersion int
|
||||
NetworkId int
|
||||
|
||||
BlockChainVersion int
|
||||
SkipBcVersionCheck bool // e.g. blockchain export
|
||||
|
||||
DataDir string
|
||||
LogFile string
|
||||
LogLevel int
|
||||
@ -149,7 +152,7 @@ type Ethereum struct {
|
||||
}
|
||||
|
||||
func New(config *Config) (*Ethereum, error) {
|
||||
// Boostrap database
|
||||
// Bootstrap database
|
||||
logger.New(config.DataDir, config.LogFile, config.LogLevel)
|
||||
if len(config.LogJSON) > 0 {
|
||||
logger.NewJSONsystem(config.DataDir, config.LogJSON)
|
||||
@ -179,6 +182,16 @@ func New(config *Config) (*Ethereum, error) {
|
||||
saveProtocolVersion(blockDb, config.ProtocolVersion)
|
||||
glog.V(logger.Info).Infof("Protocol Version: %v, Network Id: %v", config.ProtocolVersion, config.NetworkId)
|
||||
|
||||
if !config.SkipBcVersionCheck {
|
||||
b, _ := blockDb.Get([]byte("BlockchainVersion"))
|
||||
bcVersion := int(common.NewValue(b).Uint())
|
||||
if bcVersion != config.BlockChainVersion && bcVersion != 0 {
|
||||
return nil, fmt.Errorf("Blockchain DB version mismatch (%d / %d). Run geth upgradedb.\n", bcVersion, config.BlockChainVersion)
|
||||
}
|
||||
saveBlockchainVersion(blockDb, config.BlockChainVersion)
|
||||
}
|
||||
glog.V(logger.Info).Infof("Blockchain DB Version: %d", config.BlockChainVersion)
|
||||
|
||||
eth := &Ethereum{
|
||||
shutdownChan: make(chan bool),
|
||||
blockDb: blockDb,
|
||||
@ -472,3 +485,12 @@ func saveProtocolVersion(db common.Database, protov int) {
|
||||
db.Put([]byte("ProtocolVersion"), common.NewValue(protov).Bytes())
|
||||
}
|
||||
}
|
||||
|
||||
func saveBlockchainVersion(db common.Database, bcVersion int) {
|
||||
d, _ := db.Get([]byte("BlockchainVersion"))
|
||||
blockchainVersion := common.NewValue(d).Uint()
|
||||
|
||||
if blockchainVersion == 0 {
|
||||
db.Put([]byte("BlockchainVersion"), common.NewValue(bcVersion).Bytes())
|
||||
}
|
||||
}
|
||||
|
@ -299,7 +299,7 @@ func (self *ethProtocol) handle() error {
|
||||
// to simplify backend interface adding a new block
|
||||
// uses AddPeer followed by AddBlock only if peer is the best peer
|
||||
// (or selected as new best peer)
|
||||
if best, _ := self.blockPool.AddPeer(request.TD, hash, self.id, self.requestBlockHashes, self.requestBlocks, self.protoErrorDisconnect); best {
|
||||
if _, suspended := self.blockPool.AddPeer(request.TD, hash, self.id, self.requestBlockHashes, self.requestBlocks, self.protoErrorDisconnect); !suspended {
|
||||
self.blockPool.AddBlock(request.Block, self.id)
|
||||
}
|
||||
|
||||
@ -384,11 +384,9 @@ func (self *ethProtocol) sendStatus() error {
|
||||
}
|
||||
|
||||
func (self *ethProtocol) protoErrorDisconnect(err *errs.Error) {
|
||||
//err.Log(self.peer.Logger)
|
||||
err.Log(glog.V(logger.Info))
|
||||
/*
|
||||
if err.Fatal() {
|
||||
self.peer.Disconnect(p2p.DiscSubprotocolError)
|
||||
}
|
||||
*/
|
||||
if err.Fatal() {
|
||||
self.peer.Disconnect(p2p.DiscSubprotocolError)
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user