From bb925d1cf82639af3808483b22ee810144a3f2f9 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Wed, 14 Mar 2012 10:59:34 +0300 Subject: [PATCH] close session --- server.py | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) diff --git a/server.py b/server.py index dddfff3..2d4118a 100755 --- a/server.py +++ b/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) + -- 1.7.1