From c9ebc84abbe792c95d3022154cf7d7aeacca12c0 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Thu, 17 Mar 2016 08:39:10 +0100 Subject: Project 1: persistent connections in server --- project1/proj1_s4498062/webhttp/server.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'project1/proj1_s4498062/webhttp/server.py') diff --git a/project1/proj1_s4498062/webhttp/server.py b/project1/proj1_s4498062/webhttp/server.py index f400978..02ed8a6 100644 --- a/project1/proj1_s4498062/webhttp/server.py +++ b/project1/proj1_s4498062/webhttp/server.py @@ -27,6 +27,7 @@ class ConnectionHandler(threading.Thread): self.conn_socket = conn_socket self.addr = addr self.timeout = timeout + self.done = False def handle_connection(self): """Handle a new connection""" @@ -39,7 +40,7 @@ class ConnectionHandler(threading.Thread): # or can we safely assume that in this case the client will close the # transport channel, so that recv() returns something empty? try: - while True: + while not self.done: data = self.conn_socket.recv(4096) if len(data) == 0: break @@ -57,6 +58,9 @@ class ConnectionHandler(threading.Thread): logging.info("--> (%s) %s" % (self.addr[0], resp.startline())) self.send(resp) + if resp.get_header('Connection') == 'close': + self.done = True + def send(self, data): sent = self.conn_socket.send(str(data)) if sent == 0: -- cgit v1.2.3