From 70195bec2d409137d5cfce8aed706384a88bc47c Mon Sep 17 00:00:00 2001 From: Oleksii Kliukin Date: Tue, 21 Jun 2016 10:56:18 +0200 Subject: [PATCH] Handle empty body correctly when reading requests. --- patroni/api.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/patroni/api.py b/patroni/api.py index 02d8b168..a6a14dbe 100644 --- a/patroni/api.py +++ b/patroni/api.py @@ -120,8 +120,10 @@ class RestApiHandler(BaseHTTPRequestHandler): return self.send_error(411) if body_is_optional else None try: content_length = int(self.headers.get('content-length')) + if content_length == 0 and body_is_optional: + return {} request = json.loads(self.rfile.read(content_length).decode('utf-8')) - if isinstance(request, dict) and request: + if isinstance(request, dict) and (request or body_is_optional): return request except Exception: logger.exception('Bad request') @@ -190,7 +192,7 @@ class RestApiHandler(BaseHTTPRequestHandler): def do_POST_restart(self): status_code = 500 data = 'restart failed' - request = self._read_json_content() + request = self._read_json_content(body_is_optional=True) if not request: # unconditional restart try: status, data = self.server.patroni.ha.restart()