Gracefully handle when firmware image is not found in RequestDownload.

This commit is contained in:
Zaid Abdulla committed 2013-10-20 11:14:36 +03:00
1 parent 8e98b0414e
commit 59193f38ee
1 file changed
+12 -11
+12 -11
View File
@@ -347,14 +347,15 @@ listener = (httpRequest, httpResponse) ->
res = tr069.response(cwmpRequest.id, cwmpResponse, cookies) res = tr069.response(cwmpRequest.id, cwmpResponse, cookies)
writeResponse(currentRequest, res) writeResponse(currentRequest, res)
else if cwmpRequest.methodRequest.type is 'RequestDownload' else if cwmpRequest.methodRequest.type is 'RequestDownload'
requestDownloadResponse = () ->
cwmpResponse.methodResponse = {type : 'RequestDownloadResponse'}
res = tr069.response(cwmpRequest.id, cwmpResponse, cookies)
writeResponse(currentRequest, res)
fileType = cwmpRequest.methodRequest.fileType fileType = cwmpRequest.methodRequest.fileType
util.log("#{currentRequest.deviceId}: RequestDownload (#{fileType})") util.log("#{currentRequest.deviceId}: RequestDownload (#{fileType})")
if fileType isnt '1 Firmware Upgrade Image' if fileType isnt '1 Firmware Upgrade Image'
# Only supporting firmware upgrade for now # Only supporting firmware upgrade for now
cwmpResponse.methodResponse = {type : 'RequestDownloadResponse'} return requestDownloadResponse()
res = tr069.response(cwmpRequest.id, cwmpResponse, cookies)
writeResponse(currentRequest, res)
return
db.getPresets((allPresets, allObjects) -> db.getPresets((allPresets, allObjects) ->
presets.getDevicePreset(currentRequest.deviceId, allPresets, allObjects, (devicePreset) -> presets.getDevicePreset(currentRequest.deviceId, allPresets, allObjects, (devicePreset) ->
@@ -368,8 +369,12 @@ listener = (httpRequest, httpResponse) ->
db.devicesCollection.findOne({'_id' : currentRequest.deviceId}, projection, (err, device) -> db.devicesCollection.findOne({'_id' : currentRequest.deviceId}, projection, (err, device) ->
manufacturer = device.InternetGatewayDevice.DeviceInfo.Manufacturer._value manufacturer = device.InternetGatewayDevice.DeviceInfo.Manufacturer._value
productClass = device.InternetGatewayDevice.DeviceInfo.ProductClass._value productClass = device.InternetGatewayDevice.DeviceInfo.ProductClass._value
db.filesCollection.findOne({'metadata.Manufacturer' : manufacturer, 'metadata.ProductClass' : productClass, 'metadata.SoftwareVersion' : presetSoftwareVersion}, {_id : 1}, (err, file) -> db.filesCollection.findOne({'metadata.FileType' : '1 Firmware Upgrade Image', 'metadata.Manufacturer' : manufacturer, 'metadata.ProductClass' : productClass, 'metadata.SoftwareVersion' : presetSoftwareVersion}, {_id : 1}, (err, file) ->
throw err if err throw err if err
if not file?
util.error("#{currentRequest.deviceId}: Firmware image not found (#{presetSoftwareVersion})")
return requestDownloadResponse()
task = { task = {
device : currentRequest.deviceId, device : currentRequest.deviceId,
name : 'download', name : 'download',
@@ -377,16 +382,12 @@ listener = (httpRequest, httpResponse) ->
} }
apiFunctions.insertTasks(task, (err, tasks) -> apiFunctions.insertTasks(task, (err, tasks) ->
throw err if err throw err if err
cwmpResponse.methodResponse = {type : 'RequestDownloadResponse'} return requestDownloadResponse()
res = tr069.response(cwmpRequest.id, cwmpResponse, cookies)
writeResponse(currentRequest, res)
) )
) )
) )
else else
cwmpResponse.methodResponse = {type : 'RequestDownloadResponse'} return requestDownloadResponse()
res = tr069.response(cwmpRequest.id, cwmpResponse, cookies)
writeResponse(currentRequest, res)
) )
) )
else else