core: only post event once per tx & fixed test
This commit is contained in:
@ -125,11 +125,6 @@ func (pool *TxPool) ValidateTransaction(tx *types.Transaction) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (self *TxPool) addTx(tx *types.Transaction) {
|
||||
from, _ := tx.From()
|
||||
self.queue[from] = append(self.queue[from], tx)
|
||||
}
|
||||
|
||||
func (self *TxPool) add(tx *types.Transaction) error {
|
||||
hash := tx.Hash()
|
||||
|
||||
@ -147,7 +142,7 @@ func (self *TxPool) add(tx *types.Transaction) error {
|
||||
return err
|
||||
}
|
||||
|
||||
self.addTx(tx)
|
||||
self.queueTx(tx)
|
||||
|
||||
var toname string
|
||||
if to := tx.To(); to != nil {
|
||||
@ -226,6 +221,19 @@ func (pool *TxPool) Stop() {
|
||||
glog.V(logger.Info).Infoln("TX Pool stopped")
|
||||
}
|
||||
|
||||
func (self *TxPool) queueTx(tx *types.Transaction) {
|
||||
from, _ := tx.From()
|
||||
self.queue[from] = append(self.queue[from], tx)
|
||||
}
|
||||
|
||||
func (pool *TxPool) addTx(tx *types.Transaction) {
|
||||
if _, ok := pool.txs[tx.Hash()]; !ok {
|
||||
pool.txs[tx.Hash()] = tx
|
||||
// Notify the subscribers
|
||||
pool.eventMux.Post(TxPreEvent{tx})
|
||||
}
|
||||
}
|
||||
|
||||
// check queue will attempt to insert
|
||||
func (pool *TxPool) checkQueue() {
|
||||
pool.mu.Lock()
|
||||
@ -257,9 +265,7 @@ func (pool *TxPool) checkQueue() {
|
||||
}
|
||||
enonce++
|
||||
|
||||
pool.txs[tx.Hash()] = tx
|
||||
// Notify the subscribers
|
||||
go pool.eventMux.Post(TxPreEvent{tx})
|
||||
pool.addTx(tx)
|
||||
}
|
||||
//pool.queue[address] = txs[i:]
|
||||
// delete the entire queue entry if it's empty. There's no need to keep it
|
||||
|
Reference in New Issue
Block a user