From 3f272294051bdce2e94fbde35766b896f8a78c26 Mon Sep 17 00:00:00 2001 From: Rossen Georgiev Date: Sun, 16 Nov 2014 21:10:47 +0000 Subject: [PATCH] enable keepalive --- aprs.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/aprs.py b/aprs.py index c625fea..3b9bdd3 100644 --- a/aprs.py +++ b/aprs.py @@ -160,12 +160,19 @@ class IS(object): try: self.sock = socket.create_connection(self.server, 15) # 15 seconds connection timeout + self.sock.settimeout(5) # 5 second timeout to receive server banner + self.sock.setblocking(True) + + self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) + self.sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 15) + self.sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 3) + self.sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 5) if self.sock.recv(512)[0] != "#": raise ConnectionError("invalid banner from server") - self.sock.setblocking(True) + except Exception, e: self.close()