In case of fault response, store the fault and don't process any new task until fault is cleared.
This commit is contained in:
1 parent
d739adc32c
commit
60bda6921a
3 files changed
+50
-10
No files matched your search
+19
-1
@@ -116,6 +116,23 @@ setParameterValuesResponse = (xml) ->
|
||||
return JSON.parse(e.text())
|
||||
return undefined
|
||||
|
||||
fault = (xml) ->
|
||||
f = xml.get('//soap-env:Envelope/soap-env:Body/soap-env:Fault', NAMESPACES)
|
||||
if f
|
||||
traverse = (el) ->
|
||||
children = el.childNodes()
|
||||
obj = {}
|
||||
for n in el.childNodes()
|
||||
if n.type() == 'element'
|
||||
obj[n.name()] = traverse(n)
|
||||
if Object.keys(obj).length == 0
|
||||
return el.text()
|
||||
else
|
||||
return obj
|
||||
|
||||
return traverse(f)
|
||||
return undefined
|
||||
|
||||
|
||||
exports.request = (request) ->
|
||||
req = {cookies: {}}
|
||||
@@ -140,6 +157,7 @@ exports.request = (request) ->
|
||||
req.getParameterNamesResponse = getParameterNamesResponse xml
|
||||
req.getParameterValuesResponse = getParameterValuesResponse xml
|
||||
req.setParameterValuesResponse = setParameterValuesResponse xml
|
||||
req.fault = fault xml
|
||||
return req
|
||||
|
||||
|
||||
@@ -157,7 +175,7 @@ exports.response = (sessionId, params, cookies = null) ->
|
||||
#console.log '>>> EMPTY RESPONSE'
|
||||
# send empty response
|
||||
headers['Content-Length'] = 0
|
||||
return {code: 204, headers: headers, data: null}
|
||||
return {code: 204, headers: headers, data: ''}
|
||||
|
||||
xml = libxmljs.Document()
|
||||
env = xml.node('soap-env:Envelope')
|
||||
|
||||
Reference in new issue
Block a user