浏览代码

xeth: added a transact mu

Added a transact mutex. The transact mutex will fix an issue where
transactions were created with the same nonce resulting in some
transactions being dropped. This happened when two concurrent calls
would call the `Transact` method (which is OK) which would both call
`GetNonce`. While the managed is thread safe it does not help us in this
case.
Jeffrey Wilcke 10 年之前
父节点
当前提交
7bb5ac045e
共有 1 个文件被更改,包括 4 次插入4 次删除
  1. 4 4
      xeth/xeth.go

+ 4 - 4
xeth/xeth.go

@@ -89,8 +89,7 @@ type XEth struct {
 	messagesMu sync.RWMutex
 	messages   map[int]*whisperFilter
 
-	// regmut   sync.Mutex
-	// register map[string][]*interface{} // TODO improve return type
+	transactMu sync.Mutex
 
 	agent *miner.RemoteAgent
 
@@ -952,8 +951,9 @@ func (self *XEth) Transact(fromStr, toStr, nonceStr, valueStr, gasStr, gasPriceS
 		}
 	*/
 
-	// TODO: align default values to have the same type, e.g. not depend on
-	// common.Value conversions later on
+	self.transactMu.Lock()
+	defer self.transactMu.Unlock()
+
 	var nonce uint64
 	if len(nonceStr) != 0 {
 		nonce = common.Big(nonceStr).Uint64()