diff --git a/lib/bitcoind.js b/lib/bitcoind.js index 48b32b33..7965bfc9 100644 --- a/lib/bitcoind.js +++ b/lib/bitcoind.js @@ -482,10 +482,11 @@ Transaction.broadcast = function(tx, options, callback) { tx.toHex(); } - return bitcoindjs.broadcastTx(tx, fee, own, function(err, hash) { + return bitcoindjs.broadcastTx(tx, fee, own, function(err, hash, tx) { if (err) return callback(err); - bitcoin.global.emit('broadcast', hash); - return callback(null, err); + tx = bitcoin.tx(tx); + bitcoin.global.emit('broadcast', tx); + return callback(null, hash, tx); }); }; diff --git a/src/bitcoindjs.cc b/src/bitcoindjs.cc index a645287a..7d40fefc 100644 --- a/src/bitcoindjs.cc +++ b/src/bitcoindjs.cc @@ -1059,10 +1059,17 @@ async_broadcast_tx_after(uv_work_t *req) { node::FatalException(try_catch); } } else { - const unsigned argc = 2; + CDataStream ssData(ParseHex(data->tx_hex), SER_NETWORK, PROTOCOL_VERSION); + CTransaction tx; + ssData >> tx; + Local entry = NanNew(); + ctx_to_js(tx, 0, entry); + + const unsigned argc = 3; Local argv[argc] = { Local::New(Null()), - Local::New(NanNew(data->tx_hash)) + Local::New(NanNew(data->tx_hash)), + Local::New(entry) }; TryCatch try_catch; data->callback->Call(Context::GetCurrent()->Global(), argc, argv);