close session

This commit is contained in:
ThomasV 2012-03-14 10:59:34 +03:00
parent 70a197afec
commit 31e0db41b8
1 changed files with 13 additions and 5 deletions

View File

@ -673,6 +673,12 @@ def tcp_server_thread():
traceback.print_exc(file=sys.stdout) 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. # one thread per client. put requests in a queue.
def tcp_client_thread(ipaddr,conn): def tcp_client_thread(ipaddr,conn):
""" use a persistent connection. put commands in a queue.""" """ use a persistent connection. put commands in a queue."""
@ -689,9 +695,7 @@ def tcp_client_thread(ipaddr,conn):
d = conn.recv(1024) d = conn.recv(1024)
msg += d msg += d
if not d: if not d:
print "lost connection", session_id close_sesion(session_id)
sessions.pop(session_id)
sessions_sub_numblocks.remove(session_id)
break break
while True: while True:
@ -744,8 +748,12 @@ def process_output_queue():
session_id, out = output_queue.get() session_id, out = output_queue.get()
session = sessions.get(session_id) session = sessions.get(session_id)
if session: if session:
conn = session.get('conn') try:
conn.send(out+'\n') conn = session.get('conn')
conn.send(out+'\n')
except:
close_session(session_id)