From 327ba960cce2055d83a1804a9b7135c15f79353c Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Thu, 17 Mar 2016 08:38:16 +0100 Subject: Project 1: reformatting & bugfix composer --- project1/proj1_s4498062/webhttp/composer.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'project1') diff --git a/project1/proj1_s4498062/webhttp/composer.py b/project1/proj1_s4498062/webhttp/composer.py index 9e29e6c..b8b9f6a 100644 --- a/project1/proj1_s4498062/webhttp/composer.py +++ b/project1/proj1_s4498062/webhttp/composer.py @@ -37,22 +37,20 @@ class ResponseComposer: response = Response() if re.search(r'\/\.\.?(\/|$)', request.uri): - response.code = 403 - response.set_header('Connection', 'keep-alive') - response.body = 'Don\'t even think about it.' - response.set_content_length() - return response - - return self.serve(request.uri, request=request) + return self.serve_error(403) + else: + return self.serve(request.uri, request=request) def serve(self, uri, code=200, etag=None, request=None): resp = Response() + try: resource = Resource(uri) req = request if req != None and ( resource.etag_match(req.get_header('If-None-Match')) or \ - not resource.etag_match(req.get_header('If-Match') or '*')): + req.get_header('If-Match') != None and \ + not resource.etag_match(req.get_header('If-Match'))): resp.code = 304 else: resp.code = code @@ -68,7 +66,6 @@ class ResponseComposer: if resp.body == None: return self.serve_error(406) resp.set_header('ETag', resource.generate_etag()) - resp.set_header('Connection', 'keep-alive') resp.set_header('Content-Type', resource.get_content_type()) resp.set_content_length() except FileExistError: @@ -76,11 +73,15 @@ class ResponseComposer: return self.serve_error(404) else: resp.code = code - resp.set_header('Connection', 'keep-alive') resp.body = 'Error %d' % code resp.set_content_length() except FileAccessError: return self.serve_error(403) + + conn = 'keep-alive' + if req != None and req.get_header('Connection') == 'close': + conn = 'close' + resp.set_header('Connection', conn) return resp -- cgit v1.2.3