diff options
Diffstat (limited to 'eth')
-rw-r--r-- | eth/backend.go | 17 | ||||
-rw-r--r-- | eth/protocol.go | 15 |
2 files changed, 26 insertions, 6 deletions
diff --git a/eth/backend.go b/eth/backend.go index 6b60af1f1..c7a5b233f 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -195,7 +195,7 @@ func New(config *Config) (*Ethereum, error) { eth.chainManager = core.NewChainManager(blockDb, stateDb, eth.EventMux()) eth.pow = ethash.New(eth.chainManager) - eth.txPool = core.NewTxPool(eth.EventMux()) + eth.txPool = core.NewTxPool(eth.EventMux(), eth.chainManager.State) eth.blockProcessor = core.NewBlockProcessor(stateDb, extraDb, eth.pow, eth.txPool, eth.chainManager, eth.EventMux()) eth.chainManager.SetProcessor(eth.blockProcessor) eth.whisper = whisper.New() @@ -436,6 +436,21 @@ func (self *Ethereum) txBroadcastLoop() { for obj := range self.txSub.Chan() { event := obj.(core.TxPreEvent) self.net.Broadcast("eth", TxMsg, []*types.Transaction{event.Tx}) + self.syncAccounts(event.Tx) + } +} + +// keep accounts synced up +func (self *Ethereum) syncAccounts(tx *types.Transaction) { + from, err := tx.From() + if err != nil { + return + } + + if self.accountManager.HasAccount(from.Bytes()) { + if self.chainManager.TxState().GetNonce(from) < tx.Nonce() { + self.chainManager.TxState().SetNonce(from, tx.Nonce()) + } } } diff --git a/eth/protocol.go b/eth/protocol.go index 09355cfcd..878038f74 100644 --- a/eth/protocol.go +++ b/eth/protocol.go @@ -8,6 +8,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/errs" "github.com/ethereum/go-ethereum/logger" + "github.com/ethereum/go-ethereum/logger/glog" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/rlp" ) @@ -366,7 +367,8 @@ func (self *ethProtocol) requestBlocks(hashes []common.Hash) error { func (self *ethProtocol) protoError(code int, format string, params ...interface{}) (err *errs.Error) { err = self.errors.New(code, format, params...) - err.Log(self.peer.Logger) + //err.Log(self.peer.Logger) + err.Log(glog.V(logger.Info)) return } @@ -382,8 +384,11 @@ func (self *ethProtocol) sendStatus() error { } func (self *ethProtocol) protoErrorDisconnect(err *errs.Error) { - err.Log(self.peer.Logger) - if err.Fatal() { - self.peer.Disconnect(p2p.DiscSubprotocolError) - } + //err.Log(self.peer.Logger) + err.Log(glog.V(logger.Info)) + /* + if err.Fatal() { + self.peer.Disconnect(p2p.DiscSubprotocolError) + } + */ } |