From a02e3ecf17c17792b00df4b41c075d6796cb8213 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Wed, 1 Jul 2015 05:11:30 +0300 Subject: [PATCH] Fixed the incorrect way used to return error resonses in NBI. --- lib/api-functions.coffee | 2 +- lib/nbi.coffee | 30 +++++++++++++++++------------- lib/server.coffee | 2 +- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/lib/api-functions.coffee b/lib/api-functions.coffee index 38be33a..ef68b2a 100644 --- a/lib/api-functions.coffee +++ b/lib/api-functions.coffee @@ -134,7 +134,7 @@ watchTask = (taskId, timeout, callback) -> if task timeout -= 500 if timeout < 0 - callback('timeout') + callback(new Error('Timeout')) else watchTask(taskId, timeout, callback) else diff --git a/lib/nbi.coffee b/lib/nbi.coffee index 794dab9..11588c5 100644 --- a/lib/nbi.coffee +++ b/lib/nbi.coffee @@ -61,6 +61,10 @@ DEVICE_PRESET_REGEX = /^\/devices\/([a-zA-Z0-9\-\_\%]+)\/preset\/?$/ DELETE_DEVICE_REGEX = /^\/devices\/([a-zA-Z0-9\-\_\%]+)\/?$/ +errorToString = (err) -> + "#{err.name}: #{err.message}" + + listener = (request, response) -> chunks = [] bytes = 0 @@ -94,7 +98,7 @@ listener = (request, response) -> ) if err response.writeHead(500) - response.end(err) + response.end(errorToString(err)) return response.writeHead(200) response.end() @@ -106,7 +110,7 @@ listener = (request, response) -> ) if err response.writeHead(500) - response.end(err) + response.end(errorToString(err)) return response.writeHead(200) response.end() @@ -126,7 +130,7 @@ listener = (request, response) -> ) if err response.writeHead(500) - response.end(err) + response.end(errorToString(err)) return response.writeHead(200) response.end() @@ -138,7 +142,7 @@ listener = (request, response) -> ) if err response.writeHead(500) - response.end(err) + response.end(errorToString(err)) return response.writeHead(200) response.end() @@ -157,7 +161,7 @@ listener = (request, response) -> ) if err response.writeHead(500) - response.end(err) + response.end(errorToString(err)) return response.writeHead(200) response.end() @@ -169,7 +173,7 @@ listener = (request, response) -> ) if err response.writeHead(500) - response.end(err) + response.end(errorToString(err)) return response.writeHead(200) response.end() @@ -190,7 +194,7 @@ listener = (request, response) -> ) if err response.writeHead(500) - response.end(err) + response.end(errorToString(err)) return if urlParts.query.connection_request? @@ -218,7 +222,7 @@ listener = (request, response) -> apiFunctions.connectionRequest(deviceId, (err) -> if err response.writeHead 504 - response.end() + response.end(errorToString(err)) return response.writeHead 200 response.end() @@ -250,7 +254,7 @@ listener = (request, response) -> db.tasksCollection.remove({'_id' : taskId}, (err, removedCount) -> if err response.writeHead(500) - response.end(err) + response.end(errorToString(err)) return response.writeHead(200) response.end() @@ -303,9 +307,9 @@ listener = (request, response) -> else if PING_REGEX.test(urlParts.pathname) host = querystring.unescape(PING_REGEX.exec(urlParts.pathname)[1]) require('child_process').exec("ping -w 1 -i 0.2 -c 3 #{host}", (err, stdout, stderr) -> - if err? + if err response.writeHead(404, {'Cache-Control' : 'no-cache'}) - response.end() + response.end(errorToString(err)) return response.writeHead(200, {'Content-Type' : 'text/plain', 'Cache-Control' : 'no-cache'}) response.end(stdout) @@ -320,7 +324,7 @@ listener = (request, response) -> apiFunctions.deleteDevice(deviceId, (err) -> if err response.writeHead(500) - response.end(err.message) + response.end(errorToString(err)) return response.writeHead(200) response.end() @@ -343,7 +347,7 @@ listener = (request, response) -> q = JSON.parse(urlParts.query.query) catch err response.writeHead(400) - response.end(err.toString()) + response.end(errorToString(err)) return else q = {} diff --git a/lib/server.coffee b/lib/server.coffee index af58f72..cbed29b 100644 --- a/lib/server.coffee +++ b/lib/server.coffee @@ -51,7 +51,7 @@ listener = (httpRequest, httpResponse) -> ) httpResponse.writeHead(500, {'Connection' : 'close'}) - httpResponse.end() + httpResponse.end("#{err.name}: #{err.message}") catch err2 util.error("#{new Date().toISOString()} - #{err2.stack}\n") )