handle reject packet.

This commit is contained in:
Christopher Jeffrey 2015-12-17 19:47:20 -08:00
parent 135208910d
commit d109eaba6c
5 changed files with 27 additions and 5 deletions

View File

@ -318,7 +318,7 @@ Pool.prototype._addPeer = function _addPeer(backoff) {
var result = peer.broadcast(entry.tx); var result = peer.broadcast(entry.tx);
if (!result) return; if (!result) return;
result[0].once('request', function() { result[0].once('request', function() {
entry.e.emit('ack'); entry.e.emit('ack', peer);
}); });
}); });

View File

@ -156,6 +156,22 @@ exports.script = {
maxOps: 201 maxOps: 201
}; };
exports.reject = {
malformed: 0x01,
invalid: 0x10,
obsolete: 0x11,
duplicate: 0x12,
nonstandard: 0x40,
dust: 0x41,
insufficientfee: 0x42,
checkpoint: 0x43
};
exports.rejectByVal = Object.keys(exports.reject).reduce(function(out, name) {
out[exports.reject[name]] = name;
return out;
}, {});
exports.locktimeThreshold = 500000000; // Tue Nov 5 00:53:20 1985 UTC exports.locktimeThreshold = 500000000; // Tue Nov 5 00:53:20 1985 UTC
exports.oneHash = utils.toArray( exports.oneHash = utils.toArray(

View File

@ -409,10 +409,15 @@ Parser.prototype.parseReject = function parseReject(p) {
var reason = utils.stringify(p.slice(off, off + reasonLen)); var reason = utils.stringify(p.slice(off, off + reasonLen));
off += reasonLen;
var data = p.slice(off, off + 32);
return { return {
message: message, message: message,
ccode: ccode, ccode: constants.rejectByVal[ccode] || ccode,
reason: reason reason: reason,
data: data
}; };
}; };

View File

@ -746,7 +746,6 @@ TX.prototype.utxos = function utxos(unspent) {
if (this.funds('in').cmp(total) < 0) { if (this.funds('in').cmp(total) < 0) {
this.inputs = inputs; this.inputs = inputs;
this.outputs.pop(); this.outputs.pop();
this.total = total;
return null; return null;
} }
@ -770,6 +769,8 @@ TX.prototype.utxos = function utxos(unspent) {
TX.prototype.fillUnspent = function fillUnspent(unspent, changeAddress) { TX.prototype.fillUnspent = function fillUnspent(unspent, changeAddress) {
var result = unspent.utxos ? unspent : this.utxos(unspent); var result = unspent.utxos ? unspent : this.utxos(unspent);
this.filled = result;
this.changeAddress = changeAddress || this.changeAddress; this.changeAddress = changeAddress || this.changeAddress;
if (!result) if (!result)

View File

@ -535,7 +535,7 @@ Wallet.prototype.fill = function fill(tx, cb) {
var result = tx.fillUnspent(this.unspent(), this.getAddress()); var result = tx.fillUnspent(this.unspent(), this.getAddress());
if (!result) { if (!result) {
var err = new Error('Not enough funds'); var err = new Error('Not enough funds');
err.minBalance = tx.total; err.minBalance = tx.filled.total;
cb(err); cb(err);
return null; return null;
} }