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.
This commit is contained in:
Jeffrey Wilcke 2015-08-15 00:33:52 +02:00
parent cd81356ace
commit 7bb5ac045e

View File

@ -89,8 +89,7 @@ type XEth struct {
messagesMu sync.RWMutex messagesMu sync.RWMutex
messages map[int]*whisperFilter messages map[int]*whisperFilter
// regmut sync.Mutex transactMu sync.Mutex
// register map[string][]*interface{} // TODO improve return type
agent *miner.RemoteAgent 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 self.transactMu.Lock()
// common.Value conversions later on defer self.transactMu.Unlock()
var nonce uint64 var nonce uint64
if len(nonceStr) != 0 { if len(nonceStr) != 0 {
nonce = common.Big(nonceStr).Uint64() nonce = common.Big(nonceStr).Uint64()