ACME: improve error handling (#49266)

* Improve error handling: when parse_json_result is False, still return the error message.

* Remove content body from info dict.

* Add changelog.

(cherry picked from commit b842b1b97e)
pull/49461/head
Felix Fontein 6 years ago committed by Toshio Kuratomi
parent 832aa98ace
commit 1deb2300a4

@ -0,0 +1,2 @@
bugfixes:
- "ACME modules: improve error messages in some cases (include error returned by server)."

@ -578,7 +578,7 @@ class ACMEAccount(object):
try: try:
content = resp.read() content = resp.read()
except AttributeError: except AttributeError:
content = info.get('body') content = info.pop('body')
if content or not parse_json_result: if content or not parse_json_result:
if (parse_json_result and info['content-type'].startswith('application/json')) or 400 <= info['status'] < 600: if (parse_json_result and info['content-type'].startswith('application/json')) or 400 <= info['status'] < 600:
@ -593,6 +593,8 @@ class ACMEAccount(object):
continue continue
if parse_json_result: if parse_json_result:
result = decoded_result result = decoded_result
else:
result = content
except ValueError: except ValueError:
raise ModuleFailException("Failed to parse the ACME response: {0} {1}".format(url, content)) raise ModuleFailException("Failed to parse the ACME response: {0} {1}".format(url, content))
else: else:
@ -622,7 +624,7 @@ class ACMEAccount(object):
try: try:
content = resp.read() content = resp.read()
except AttributeError: except AttributeError:
content = info.get('body') content = info.pop('body')
# Process result # Process result
if parse_json_result: if parse_json_result:

Loading…
Cancel
Save