From 31e0db41b82daeb11d0c915d7bb0f16e9b5533d8 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Wed, 14 Mar 2012 10:59:34 +0300 Subject: [PATCH] close session --- server/server.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/server/server.py b/server/server.py index dddfff3e..2d4118a6 100755 --- a/server/server.py +++ b/server/server.py @@ -673,6 +673,12 @@ def tcp_server_thread(): traceback.print_exc(file=sys.stdout) +def close_sesion(session_id): + print "lost connection", session_id + sessions.pop(session_id) + sessions_sub_numblocks.remove(session_id) + + # one thread per client. put requests in a queue. def tcp_client_thread(ipaddr,conn): """ use a persistent connection. put commands in a queue.""" @@ -689,9 +695,7 @@ def tcp_client_thread(ipaddr,conn): d = conn.recv(1024) msg += d if not d: - print "lost connection", session_id - sessions.pop(session_id) - sessions_sub_numblocks.remove(session_id) + close_sesion(session_id) break while True: @@ -744,8 +748,12 @@ def process_output_queue(): session_id, out = output_queue.get() session = sessions.get(session_id) if session: - conn = session.get('conn') - conn.send(out+'\n') + try: + conn = session.get('conn') + conn.send(out+'\n') + except: + close_session(session_id) +