diff --git a/lib/util/tx.js b/lib/util/tx.js index 0d4c0b61..b2bf9222 100644 --- a/lib/util/tx.js +++ b/lib/util/tx.js @@ -2,11 +2,21 @@ var uuid = require('node-uuid') var Promise = require('bluebird') function newId() { - return uuid.v4() + return uuid.v4(null, new Buffer(16)) } module.exports.newId = newId +function compareId(id1, id2) { + for (var i = 0; i < 16; ++i) { + if (id1[i] < id2[i]) return -1 + if (id1[i] > id2[i]) return 1 + } + return 0 +} + +module.exports.compareId = compareId + function q(output, input, channel, args) { var deferred = Promise.defer() , ourId = newId() @@ -15,7 +25,7 @@ function q(output, input, channel, args) { , remaining = 0 // @todo pass expected number to query function onMessage(theirId, serial, state, data) { - if (ourId === theirId.toString()) { + if (compareId(ourId, theirId) === 0) { serial = serial.toString() state = state.toString()