From 1c5b100561da442e192325fc778560a9effae00d Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Sun, 5 Jul 2015 01:39:54 +0300 Subject: [PATCH] Ensure customCommand init tasks triggered by inform run after any refreshObject task. --- lib/cwmp.coffee | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/cwmp.coffee b/lib/cwmp.coffee index a156710..f0bcdf1 100644 --- a/lib/cwmp.coffee +++ b/lib/cwmp.coffee @@ -173,7 +173,7 @@ inform = (currentRequest, cwmpRequest) -> for k of reference continue if k[0] == '_' if not actual[k]?._timestamp? or actual[k]._timestamp < lastBootstrap - _tasks.push({device: currentRequest.session.deviceId, name : 'refreshObject', objectName : reference[k]._path}) + _tasks.push({device: currentRequest.session.deviceId, name : 'refreshObject', objectName : reference[k]._path, timestamp : now}) else traverse(reference[k], actual[k]) @@ -186,7 +186,8 @@ inform = (currentRequest, cwmpRequest) -> for cmd in customCommands.getDeviceCustomCommandNames(currentRequest.session.deviceId) if not (deviceCustomCommands[cmd]?._timestamp < lastBootstrap) - _tasks.push({device: currentRequest.session.deviceId, name: 'customCommand', command: "#{cmd} init"}) + # Increment timestamp by one millisecond to ensure it runs after any refresh task + _tasks.push({device: currentRequest.session.deviceId, name: 'customCommand', command: "#{cmd} init", timestamp: new Date(now.getTime() + 1)}) delete deviceCustomCommands[cmd] for cmd of deviceCustomCommands @@ -210,10 +211,11 @@ inform = (currentRequest, cwmpRequest) -> db.devicesCollection.insert({_id : currentRequest.session.deviceId, _registered : now, _deviceId : deviceIdDetails}, (err) -> throw err if err util.log("#{currentRequest.session.deviceId}: New device registered") - _tasks.push({device: currentRequest.session.deviceId, name : 'refreshObject', objectName : ''}) + _tasks.push({device: currentRequest.session.deviceId, name : 'refreshObject', objectName : '', timestamp : now}) for cmd in customCommands.getDeviceCustomCommandNames(currentRequest.session.deviceId) - _tasks.push({device: currentRequest.session.deviceId, name: 'customCommand', command: "#{cmd} init"}) + # Increment timestamp by one millisecond to ensure it runs after any refresh task + _tasks.push({device: currentRequest.session.deviceId, name: 'customCommand', command: "#{cmd} init", timestamp: new Date(now.getTime() + 1)}) apiFunctions.insertTasks(_tasks, {}, () -> updateAndRespond()