More support for return PDUs params and tlvs and more tests
This commit is contained in:
+1
-1
@@ -67,7 +67,7 @@ function clientSession(sock, options) {
|
|||||||
} else if (pduObj.cmdName === 'submit_sm') {
|
} else if (pduObj.cmdName === 'submit_sm') {
|
||||||
returnObj.submitSm(pduObj);
|
returnObj.submitSm(pduObj);
|
||||||
} else if (pduObj.cmdName === 'unbind') {
|
} else if (pduObj.cmdName === 'unbind') {
|
||||||
returnObj.sendReturn(pduObj, 'ESME_ROK', true);
|
returnObj.sendReturn(pduObj, 'ESME_ROK', undefined, true);
|
||||||
} else {
|
} else {
|
||||||
// All other commands we do not support
|
// All other commands we do not support
|
||||||
returnObj.sendReturn(pduObj, 'ESME_RINVCMDID');
|
returnObj.sendReturn(pduObj, 'ESME_RINVCMDID');
|
||||||
|
|||||||
+1
-1
@@ -95,7 +95,7 @@ function serverSession(sock, options) {
|
|||||||
|
|
||||||
returnObj.on('incomingPdu', function(pduObj) {
|
returnObj.on('incomingPdu', function(pduObj) {
|
||||||
if (pduObj.cmdName === 'unbind') {
|
if (pduObj.cmdName === 'unbind') {
|
||||||
returnObj.sendReturn(pduObj, 'ESME_ROK', true);
|
returnObj.sendReturn(pduObj, 'ESME_ROK', undefined, true);
|
||||||
} else if (returnObj.loggedIn === false) {
|
} else if (returnObj.loggedIn === false) {
|
||||||
log.debug('larvitsmpp: lib/server.js: serverSession() - returnObj.handleIncomingPdu() - Not logged in, running login function');
|
log.debug('larvitsmpp: lib/server.js: serverSession() - returnObj.handleIncomingPdu() - Not logged in, running login function');
|
||||||
returnObj.login(pduObj);
|
returnObj.login(pduObj);
|
||||||
|
|||||||
+16
-4
@@ -160,16 +160,23 @@ function session(sock) {
|
|||||||
*
|
*
|
||||||
* @param obj or buf pdu
|
* @param obj or buf pdu
|
||||||
* @param str status - see list at defs.errors - defaults to 'ESME_ROK' - no error (OPTIONAL)
|
* @param str status - see list at defs.errors - defaults to 'ESME_ROK' - no error (OPTIONAL)
|
||||||
|
* @param obj params (OPTIONAL)
|
||||||
* @param bol closeAfterSend - if true will close the socket after sending (OPTIONAL)
|
* @param bol closeAfterSend - if true will close the socket after sending (OPTIONAL)
|
||||||
* @param func callback(err) (OPTIONAL)
|
* @param func callback(err, retPdu) (OPTIONAL)
|
||||||
*/
|
*/
|
||||||
returnObj.sendReturn = function(pdu, status, closeAfterSend, callback) {
|
returnObj.sendReturn = function(pdu, status, params, closeAfterSend, callback) {
|
||||||
|
if (typeof params === 'function') {
|
||||||
|
callback = params;
|
||||||
|
params = undefined;
|
||||||
|
closeAfterSend = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof closeAfterSend === 'function') {
|
if (typeof closeAfterSend === 'function') {
|
||||||
callback = closeAfterSend;
|
callback = closeAfterSend;
|
||||||
closeAfterSend = undefined;
|
closeAfterSend = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
smppUtils.pduReturn(pdu, status, function(err, retPdu) {
|
smppUtils.pduReturn(pdu, status, params, function(err, retPdu) {
|
||||||
if (err) {
|
if (err) {
|
||||||
log.error('larvitsmpp: lib/session.js: session() - returnObj.sendReturn() - Could not create return PDU: ' + err.message);
|
log.error('larvitsmpp: lib/session.js: session() - returnObj.sendReturn() - Could not create return PDU: ' + err.message);
|
||||||
returnObj.closeSocket();
|
returnObj.closeSocket();
|
||||||
@@ -184,7 +191,7 @@ function session(sock) {
|
|||||||
returnObj.sockWrite(retPdu, closeAfterSend);
|
returnObj.sockWrite(retPdu, closeAfterSend);
|
||||||
|
|
||||||
if (typeof callback === 'function') {
|
if (typeof callback === 'function') {
|
||||||
callback();
|
callback(null, retPdu);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@@ -215,6 +222,11 @@ function session(sock) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
returnObj.send(pduObj, function(err, retPduObj) {
|
returnObj.send(pduObj, function(err, retPduObj) {
|
||||||
|
|
||||||
|
console.log('RAAAV');
|
||||||
|
console.log(retPduObj);
|
||||||
|
|
||||||
|
|
||||||
if (typeof callback === 'function') {
|
if (typeof callback === 'function') {
|
||||||
callback(err, retPduObj.params.message_id, retPduObj);
|
callback(err, retPduObj.params.message_id, retPduObj);
|
||||||
}
|
}
|
||||||
|
|||||||
+27
-10
@@ -323,10 +323,11 @@ function objToPdu(obj, callback) {
|
|||||||
*
|
*
|
||||||
* @param obj or buf pdu
|
* @param obj or buf pdu
|
||||||
* @param str status - see list at defs.errors - defaults to 'ESME_ROK' - no error (OPTIONAL)
|
* @param str status - see list at defs.errors - defaults to 'ESME_ROK' - no error (OPTIONAL)
|
||||||
|
* @param obj params (OPTIONAL)
|
||||||
* @param obj tlvs (OPTIONAL)
|
* @param obj tlvs (OPTIONAL)
|
||||||
* @param func callback(err, pduBuffer) (OPTIONAL)
|
* @param func callback(err, pduBuffer) (OPTIONAL)
|
||||||
*/
|
*/
|
||||||
function pduReturn(pdu, status, tlvs, callback) {
|
function pduReturn(pdu, status, params, tlvs, callback) {
|
||||||
var err = null,
|
var err = null,
|
||||||
retPdu = {},
|
retPdu = {},
|
||||||
param;
|
param;
|
||||||
@@ -340,23 +341,28 @@ function pduReturn(pdu, status, tlvs, callback) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pduReturn(pduObj, status, callback);
|
pduReturn(pduObj, status, params, tlvs, callback);
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.silly('larvitsmpp: lib/utils.js: pduReturn() - ran');
|
log.silly('larvitsmpp: lib/utils.js: pduReturn() - ran');
|
||||||
|
|
||||||
// If status is a function, it is the callback.
|
if (typeof tlvs === 'function') {
|
||||||
// Default to OK status and sett callback correctly
|
callback = tlvs;
|
||||||
if (typeof status === 'function') {
|
|
||||||
callback = status;
|
|
||||||
status = 'ESME_ROK';
|
|
||||||
tlvs = undefined;
|
tlvs = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof tlvs === 'function') {
|
if (typeof params === 'function') {
|
||||||
callback = tlvs;
|
callback = params;
|
||||||
|
params = {};
|
||||||
|
tlvs = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof status === 'function') {
|
||||||
|
callback = status;
|
||||||
|
status = 'ESME_ROK';
|
||||||
|
params = {};
|
||||||
tlvs = undefined;
|
tlvs = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,6 +370,13 @@ function pduReturn(pdu, status, tlvs, callback) {
|
|||||||
status = 'ESME_ROK';
|
status = 'ESME_ROK';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (callback === undefined) {
|
||||||
|
callback = function() {};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params === undefined) {
|
||||||
|
params = {};
|
||||||
|
}
|
||||||
|
|
||||||
if (pdu === undefined || pdu.cmdName === undefined || pdu.seqNr === undefined) {
|
if (pdu === undefined || pdu.cmdName === undefined || pdu.seqNr === undefined) {
|
||||||
err = new Error('larvitsmpp: lib/utils.js: pduReturn() - Invalid call PDU, cannot create response PDU');
|
err = new Error('larvitsmpp: lib/utils.js: pduReturn() - Invalid call PDU, cannot create response PDU');
|
||||||
@@ -386,13 +399,17 @@ function pduReturn(pdu, status, tlvs, callback) {
|
|||||||
retPdu.cmdName = pdu.cmdName + '_resp';
|
retPdu.cmdName = pdu.cmdName + '_resp';
|
||||||
retPdu.cmdStatus = status;
|
retPdu.cmdStatus = status;
|
||||||
retPdu.seqNr = pdu.seqNr;
|
retPdu.seqNr = pdu.seqNr;
|
||||||
retPdu.params = {};
|
retPdu.params = params;
|
||||||
retPdu.tlvs = tlvs;
|
retPdu.tlvs = tlvs;
|
||||||
|
|
||||||
// Populate parameters that should exist in the response
|
// Populate parameters that should exist in the response
|
||||||
for (param in defs.cmds[pdu.cmdName + '_resp'].params) {
|
for (param in defs.cmds[pdu.cmdName + '_resp'].params) {
|
||||||
|
|
||||||
|
// Do not override the manually supplied parameters
|
||||||
|
if (retPdu.params[param] === undefined) {
|
||||||
retPdu.params[param] = pdu.params[param];
|
retPdu.params[param] = pdu.params[param];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
objToPdu(retPdu, function(err, retPdu) {
|
objToPdu(retPdu, function(err, retPdu) {
|
||||||
callback(err, retPdu);
|
callback(err, retPdu);
|
||||||
|
|||||||
@@ -200,8 +200,52 @@ describe('PDU convertion', function() {
|
|||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Return PDUs', function() {
|
||||||
|
|
||||||
|
it('should create a basic and valid return PDU', function(done) {
|
||||||
|
var pduObj = {
|
||||||
|
'cmdName': 'deliver_sm',
|
||||||
|
'seqNr': 393,
|
||||||
|
'cmdStatus': 'ESME_ROK',
|
||||||
|
'params': {
|
||||||
|
'source_addr': '46701113311',
|
||||||
|
'destination_addr': '46709771337',
|
||||||
|
'esm_class': 4,
|
||||||
|
'short_message': 'random stuff',
|
||||||
|
'message_id': 'od9s2'
|
||||||
|
},
|
||||||
|
'tlvs': {
|
||||||
|
'receipted_message_id': {
|
||||||
|
'tagId': 0x001E,
|
||||||
|
'tagName': 'receipted_message_id',
|
||||||
|
'tagValue': '293f293'
|
||||||
|
},
|
||||||
|
'5142': {
|
||||||
|
'tagId': 5142,
|
||||||
|
'tagName': 'Nils',
|
||||||
|
'tagValue': new Buffer('blajfoo', 'ascii')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
larvitsmpp.utils.pduReturn(pduObj, function(err, pduBuffer) {
|
||||||
|
assert( ! err, 'Error should be negative');
|
||||||
|
|
||||||
|
larvitsmpp.utils.pduToObj(pduBuffer, function(err, retPduObj) {
|
||||||
|
assert( ! err, 'Error should be negative');
|
||||||
|
|
||||||
|
assert(retPduObj.cmdName === 'deliver_sm_resp', 'Command name should be "deliver_sm_resp"');
|
||||||
|
assert(retPduObj.cmdStatus === 'ESME_ROK', 'Command status should be ESME_ROK');
|
||||||
|
assert(retPduObj.params.message_id === 'od9s2', 'message_id should be correct');
|
||||||
|
|
||||||
|
done();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user