From 96652a1b39d59837e1ee9e2506a352215ed4f98f Mon Sep 17 00:00:00 2001 From: Vitaliy Kharechko Date: Thu, 9 Jun 2016 15:34:51 +0300 Subject: [PATCH] Catch possible exceptions in POST handler Change-Id: I870292ae519c0d2b1779504c7ed5461b5afe0d87 --- ...iew_collector.py => broadview_collector.py | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) rename broadview_collector/broadview_collector.py => broadview_collector.py (84%) diff --git a/broadview_collector/broadview_collector.py b/broadview_collector.py similarity index 84% rename from broadview_collector/broadview_collector.py rename to broadview_collector.py index eb1b166..0651cd0 100644 --- a/broadview_collector/broadview_collector.py +++ b/broadview_collector.py @@ -146,15 +146,30 @@ class HTTPRequestHandler(BaseHTTPRequestHandler): pass def do_POST(self): - ctype, pdict = cgi.parse_header(self.headers.getheader('content-type')) - length = int(self.headers.getheader('content-length')) - data = ast.literal_eval(json.loads(self.rfile.read(length))) - code = collector.handlePOST(self.path, ctype, length, self.client_address[0], data ) - data = json.dumps({}) - self.send_response(code) - self.send_header('Content-Type', 'application/json') - self.end_headers() - self.wfile.write(data) + try: + ctype, pdict = cgi.parse_header(self.headers.getheader('content-type')) + except: + e = sys.exc_info()[0] + LOG.info("broadview_collector: do_POST missing content-type {}".format(e)) + ctype = None + try: + length = int(self.headers.getheader('content-length')) + except: + e = sys.exc_info()[0] + LOG.info("broadview_collector: do_POST missing content-length {}".format(e)) + length = 0 + if ctype and "json" in ctype.lower(): + data = ast.literal_eval(json.loads(self.rfile.read(length))) + code = collector.handlePOST(self.path, ctype, length, self.client_address[0], data ) + data = json.dumps({}) + try: + self.send_response(code) + self.send_header('Content-Type', 'application/json') + self.end_headers() + self.wfile.write(data) + except: + e = sys.exc_info()[0] + LOG.info("broadview_collector: do_POST unable to write response {}".format(e)) return