Handle invalid xml chars gracefully

This commit is contained in:
Zaid Abdulla committed 2012-12-20 15:34:24 +03:00
1 parent 0ac2bdf656
commit 95ee9ffd0e
2 files changed
+14 -13

No files matched your search

+4 -2
View File
@@ -135,9 +135,11 @@ else
process.on('uncaughtException', (err) ->
# dump request/response logs and stack trace
util.log("Unexpected error occured. Writing log to debug/#{currentClientIP}.log.")
memcached.get("debug-#{currentClientIP}", (er, l) ->
memcached.get("debug-#{currentClientIP}", (err, l) ->
util.error(err) if err
fs = require 'fs'
fs.writeFile("debug/#{currentClientIP}.log", l + "\n\n" + err.stack, (err) ->
util.error(err) if err
process.exit(1)
)
)
@@ -181,7 +183,7 @@ else
)
resParams = {}
reqParams = tr069.request(request.headers, request.getBody())
reqParams = tr069.request(request)
if reqParams.inform
resParams.inform = true
+10 -11
View File
@@ -117,16 +117,19 @@ setParameterValuesResponse = (xml) ->
return undefined
exports.request = (headers, data) ->
#console.log '<<< REQUEST'
#console.dir [headers, data]
#console.log data
exports.request = (request) ->
req = {cookies: {}}
req.cookies = cookiesToObj(headers.cookie) if headers.cookie
req.cookies = cookiesToObj(request.headers.cookie) if request.headers.cookie
if +headers['Content-Length'] > 0 || data.length > 0
data = request.getBody()
if +request.headers['Content-Length'] > 0 || data.length > 0
try
xml = libxmljs.parseXml data
catch err
# some devices send invalid utf8 characters
xml = libxmljs.parseXml request.getBody('binary')
req.sessionId = sessionId xml
req.inform = true if xml.get('//soap-env:Envelope/soap-env:Body/cwmp:Inform', NAMESPACES)
req.informParameterValues = informParameterValues xml
@@ -195,8 +198,4 @@ exports.response = (sessionId, params, cookies = null) ->
data = xml.toString()
headers['Content-Length'] = data.length
#console.log '>>> RESPONSE'
#console.dir headers
#console.log data
return {code: 200, headers: headers, data: data}