mirror of https://github.com/MISP/PyMISP
Check for zero-length 500 response from the server and produce a suitable error message
In experimenting with PyMISP I am triggering problems on the server I am using. Occasionally the server will return a 500 response with a message indicating an internal error, but more often than not it returns a 500 response with no contents, and _check_response falls over itself, generating hard-to-fathom exception from the json internals. This commit hardens _check_response by detecting zero-length responses and raising a suitable exception. Also fix a missing bracket in one of the subsequent exception strings.pull/147/head
parent
1d190cdf50
commit
8a8b0c113d
|
@ -223,13 +223,16 @@ class PyMISP(object):
|
||||||
"""Check if the response from the server is not an unexpected error"""
|
"""Check if the response from the server is not an unexpected error"""
|
||||||
errors = []
|
errors = []
|
||||||
if response.status_code >= 500:
|
if response.status_code >= 500:
|
||||||
errors.append(response.json())
|
if len(response.content) == 0:
|
||||||
logger.critical('Something bad happened on the server-side: {}'.format(response.json()))
|
raise PyMISPError('Something bad happened on the server-side and there was no content to be decoded')
|
||||||
|
else:
|
||||||
|
errors.append(response.json())
|
||||||
|
logger.critical('Something bad happened on the server-side: {}'.format(response.json()))
|
||||||
try:
|
try:
|
||||||
to_return = response.json()
|
to_return = response.json()
|
||||||
except ValueError:
|
except ValueError:
|
||||||
# It the server didn't return a JSON blob, we've a problem.
|
# It the server didn't return a JSON blob, we've a problem.
|
||||||
raise PyMISPError('Unknown error (something is very broken server-side: {}'.format(response.text))
|
raise PyMISPError('Unknown error (something is very broken server-side: {})'.format(response.text))
|
||||||
|
|
||||||
if isinstance(to_return, (list, str)):
|
if isinstance(to_return, (list, str)):
|
||||||
to_return = {'response': to_return}
|
to_return = {'response': to_return}
|
||||||
|
|
Loading…
Reference in New Issue