tcp keepalive opts don't work under windows

This commit is contained in:
Rossen Georgiev 2014-11-22 05:03:42 +00:00
parent da86518aa9
commit 34b4cd6ded
1 changed files with 6 additions and 3 deletions

View File

@ -6,6 +6,7 @@ import datetime
import re
import math
import logging
import sys
logger = logging.getLogger(__name__)
@ -165,9 +166,11 @@ class IS(object):
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 sys.platform not in ['cygwin','win32']:
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")