Better robusteness for errors when writing buffers

This commit is contained in:
2015-05-01 14:53:57 +02:00
parent c788f9ae2d
commit df1788df0b
2 changed files with 24 additions and 7 deletions
+17 -6
View File
@@ -218,15 +218,24 @@ function objToPdu(obj, callback) {
// Used to write buffer once the command length is known
function writeBuffer() {
var offset = 16; // Start the offset on the body
var offset = 16, // Start the offset on the body
err;
buff = new Buffer(cmdLength);
// Write PDU header
buff.writeUInt32BE(cmdLength, 0); // Command length for the first 4 octets
buff.writeUInt32BE(defs.cmds[obj.cmdName].id, 4); // Command id for the second 4 octets
buff.writeUInt32BE(defs.errors[obj.cmdStatus], 8); // Command status for the third 4 octets
buff.writeUInt32BE(seqNr, 12); // Sequence number as the fourth 4 octets
try {
buff.writeUInt32BE(cmdLength, 0); // Command length for the first 4 octets
buff.writeUInt32BE(defs.cmds[obj.cmdName].id, 4); // Command id for the second 4 octets
buff.writeUInt32BE(defs.errors[obj.cmdStatus], 8); // Command status for the third 4 octets
buff.writeUInt32BE(seqNr, 12); // Sequence number as the fourth 4 octets
} catch (e) {
err = new Error('Could not write PDU header, catched err: ' + e.message, obj);
log.error('larvitsmpp: lib/utils.js: objToPdu() - writeBuffer() - ' + err.message);
callback(err);
return;
}
// Cycle through the defs list to make sure the params are in the right order
for (param in defs.cmds[obj.cmdName].params) {
@@ -315,7 +324,9 @@ function objToPdu(obj, callback) {
calcCmdLength();
writeBuffer();
callback(null, buff);
if (buff) {
callback(null, buff);
}
}
/**