From a953f3ec971fc6aebd28fed78d44778107ee4033 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Wed, 8 Apr 2015 13:07:21 +0200
Subject: Sync managed accounts to the network

---
 eth/backend.go | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

(limited to 'eth')

diff --git a/eth/backend.go b/eth/backend.go
index 6b60af1f1..317ee7373 100644
--- a/eth/backend.go
+++ b/eth/backend.go
@@ -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()+1)
+		}
 	}
 }
 
-- 
cgit v1.2.3