# HG changeset patch # User cmlenz # Date 1128815259 0 # Node ID a111d7c72ad02db2b9e4de7dc149e24cf6429352 # Parent 4b6abf75a930b509366dda0b7d3b0e0c435fff63 * Bump up version number. * Use `SO_KEEPALIVE` to enable TCP-level pings for keeping the connection alive even if nothing is happening. diff --git a/bitten/__init__.py b/bitten/__init__.py --- a/bitten/__init__.py +++ b/bitten/__init__.py @@ -7,4 +7,4 @@ # you should have received as part of this distribution. The terms # are also available at http://bitten.cmlenz.net/wiki/License. -__version__ = '0.5' +__version__ = '0.6' diff --git a/bitten/util/beep.py b/bitten/util/beep.py --- a/bitten/util/beep.py +++ b/bitten/util/beep.py @@ -99,6 +99,7 @@ asyncore.dispatcher.__init__(self) self.create_socket(socket.AF_INET, socket.SOCK_STREAM) self.set_reuse_addr() + self.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) self.bind((ip, port)) self.sessions = [] self.profiles = {} # Mapping from URIs to ProfileHandler sub-classes @@ -198,6 +199,9 @@ peer in the listening role, 1 for initiators """ asynchat.async_chat.__init__(self, conn) + if conn: + self.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) + self.listener = listener self.addr = addr self.set_terminator('\r\n')