ignore socket timeouts; refine tuer-warnstate-nervlist
[saartuer.git] / tysock.py
index 0984b2a480f949178acff6c51defde3c54f97f2f..676f57398b28b73f81e5882b79fefd831e84e6ca 100644 (file)
--- a/tysock.py
+++ b/tysock.py
@@ -44,10 +44,11 @@ class TySocket():
                self._sock.listen(1)
        
        def _answer(self, conn):
-               def answer(msg):
+               def answer(msg, lastMsg = True):
                        # this is called in another thread, so it should be quick and not touch the TySocket
                        waynesend(conn, msg)
-                       conn.close()
+                       if lastMsg:
+                               conn.close()
                return answer
        
        def accept(self):
@@ -70,8 +71,11 @@ class TySocket():
                                        # _answer will be called, and it will close the connection
                                else:
                                        waynesend(conn, 'Command not found')
-                                       conn.close()
                        except KeyboardInterrupt:
                                raise # forward Ctrl-C to the outside
+                       except socket.timeout:
+                               # it's okay
+                               logger.info("TySocket: Connection timed out")
                        except Exception as e:
                                logger.critical("TySocket: Something went wrong: %s" % str(e))
+                       conn.close()