tx-pool: emit updates only at end of .add()

This commit is contained in:
Fedor Indutny 2014-05-09 15:13:20 +04:00
parent d4f11676c7
commit af993dc66b

View File

@ -60,6 +60,7 @@ TXPool.prototype.add = function add(tx, noWrite) {
this._all[hash] = tx; this._all[hash] = tx;
var own = this._wallet.own(tx); var own = this._wallet.own(tx);
var update = false;
// Consume unspent money or add orphans // Consume unspent money or add orphans
for (var i = 0; i < tx.inputs.length; i++) { for (var i = 0; i < tx.inputs.length; i++) {
@ -71,7 +72,7 @@ TXPool.prototype.add = function add(tx, noWrite) {
// Add TX to inputs and spend money // Add TX to inputs and spend money
tx.input(unspent.tx, unspent.index); tx.input(unspent.tx, unspent.index);
delete this._unspent[key]; delete this._unspent[key];
this.emit('update'); updated = true;
continue; continue;
} }
@ -83,10 +84,11 @@ TXPool.prototype.add = function add(tx, noWrite) {
this._orphans[key] = { tx: tx, index: input.out.index }; this._orphans[key] = { tx: tx, index: input.out.index };
} }
if (!own) if (!own) {
if (updated)
this.emit('update', this._lastTs);
return; return;
}
var updated = false;
// Add unspent outputs or fullfill orphans // Add unspent outputs or fullfill orphans
for (var i = 0; i < tx.outputs.length; i++) { for (var i = 0; i < tx.outputs.length; i++) {