diff --git a/lib/bcoin/fullnode.js b/lib/bcoin/fullnode.js index db24ac03..7d941ed2 100644 --- a/lib/bcoin/fullnode.js +++ b/lib/bcoin/fullnode.js @@ -197,8 +197,25 @@ Fullnode.prototype.broadcast = function broadcast(item, callback) { return this.pool.broadcast(item, callback); }; -Fullnode.prototype.sendTX = function sendTX(item, callback) { - return this.pool.sendTX(item, callback); +Fullnode.prototype.sendTX = function sendTX(item, wait, callback) { + var self = this; + + if (!callback) { + callback = wait; + wait = null; + } + + this.mempool.addTX(item, function(err) { + if (err) + return callback(err); + + if (!wait) { + self.pool.broadcast(item); + return callback(); + } + + self.pool.broadcast(item, callback); + }); }; Fullnode.prototype.sendBlock = function sendBlock(item, callback) { diff --git a/lib/bcoin/http/server.js b/lib/bcoin/http/server.js index b3979c34..eac95bce 100644 --- a/lib/bcoin/http/server.js +++ b/lib/bcoin/http/server.js @@ -306,12 +306,14 @@ NodeServer.prototype._init = function _init() { address: req.options.address, value: req.options.value }, function(err, tx) { + if (err) { + wallet.destroy(); + return next(err); + } + wallet.destroy(); - if (err) - return next(err); - - addTX(tx, function(err) { + self.node.sendTX(tx, false, function(err) { if (err) return next(err); @@ -321,20 +323,6 @@ NodeServer.prototype._init = function _init() { }); }); - function addMempool(tx, callback) { - if (!self.mempool) - return callback(); - self.mempool.addTX(tx, callback); - } - - function addTX(tx, callback) { - addMempool(tx, function(err) { - if (err) - return callback(err); - self.pool.broadcast(tx, callback); - }); - } - // Zap Wallet TXs this.post('/wallet/:id/zap', function(req, res, next, send) { var id = req.options.id; diff --git a/lib/bcoin/spvnode.js b/lib/bcoin/spvnode.js index 388a2306..1d553c07 100644 --- a/lib/bcoin/spvnode.js +++ b/lib/bcoin/spvnode.js @@ -146,7 +146,11 @@ SPVNode.prototype.broadcast = function broadcast(item, callback) { return this.pool.broadcast(item, callback); }; -SPVNode.prototype.sendTX = function sendTX(item, callback) { +SPVNode.prototype.sendTX = function sendTX(item, wait, callback) { + if (!callback) { + callback = wait; + wait = null; + } return this.pool.sendTX(item, callback); };