Merge "Support TCP keepalives in geard"
This commit is contained in:
commit
defb9722b8
|
@ -2424,6 +2424,10 @@ class Server(BaseClientServer):
|
|||
access control rules to its connections.
|
||||
:arg str host: Host name or IPv4/IPv6 address to bind to. Defaults
|
||||
to "whatever getaddrinfo() returns", which might be IPv4-only.
|
||||
:arg bool keepalive: Whether to use TCP keepalives
|
||||
:arg int tcp_keepidle: Idle time after which to start keepalives sending
|
||||
:arg int tcp_keepintvl: Interval in seconds between TCP keepalives
|
||||
:arg int tcp_keepcnt: Count of TCP keepalives to send before disconnect
|
||||
"""
|
||||
|
||||
edge_bitmask = select.EPOLLET
|
||||
|
@ -2433,7 +2437,8 @@ class Server(BaseClientServer):
|
|||
|
||||
def __init__(self, port=4730, ssl_key=None, ssl_cert=None, ssl_ca=None,
|
||||
statsd_host=None, statsd_port=8125, statsd_prefix=None,
|
||||
server_id=None, acl=None, host=None):
|
||||
server_id=None, acl=None, host=None, keepalive=False,
|
||||
tcp_keepidle=7200, tcp_keepintvl=75, tcp_keepcnt=9):
|
||||
self.port = port
|
||||
self.ssl_key = ssl_key
|
||||
self.ssl_cert = ssl_cert
|
||||
|
@ -2462,6 +2467,15 @@ class Server(BaseClientServer):
|
|||
self.socket = socket.socket(af, socktype, proto)
|
||||
self.socket.setsockopt(socket.SOL_SOCKET,
|
||||
socket.SO_REUSEADDR, 1)
|
||||
if keepalive:
|
||||
self.socket.setsockopt(socket.SOL_SOCKET,
|
||||
socket.SO_KEEPALIVE, 1)
|
||||
self.socket.setsockopt(socket.IPPROTO_TCP,
|
||||
socket.TCP_KEEPIDLE, tcp_keepidle)
|
||||
self.socket.setsockopt(socket.IPPROTO_TCP,
|
||||
socket.TCP_KEEPINTVL, tcp_keepintvl)
|
||||
self.socket.setsockopt(socket.IPPROTO_TCP,
|
||||
socket.TCP_KEEPCNT, tcp_keepcnt)
|
||||
except socket.error:
|
||||
self.socket = None
|
||||
continue
|
||||
|
|
|
@ -60,6 +60,18 @@ support.
|
|||
help='path to SSL private key')
|
||||
parser.add_argument('--acl', dest='acl', metavar='PATH',
|
||||
help='path to ACL file')
|
||||
parser.add_argument('--keepalive', dest='keepalive', default=False,
|
||||
action='store_true',
|
||||
help='enable TCP keepalives in socket')
|
||||
parser.add_argument('--keepalive-idle', dest='tcp_keepidle', type=int,
|
||||
default=7200, action='store',
|
||||
help='TCP keepalive idle time')
|
||||
parser.add_argument('--keepalive-interval', dest='tcp_keepintvl', type=int,
|
||||
default=75, action='store',
|
||||
help='TCP keepalive probe interval')
|
||||
parser.add_argument('--keepalive-count', dest='tcp_keepcnt', type=int,
|
||||
default=9, action='store',
|
||||
help='TCP keepalive probes count')
|
||||
parser.add_argument('--version', dest='version', action='store_true',
|
||||
help='show version')
|
||||
self.args = parser.parse_args()
|
||||
|
@ -109,7 +121,12 @@ support.
|
|||
statsd_host,
|
||||
statsd_port,
|
||||
statsd_prefix,
|
||||
acl=acl)
|
||||
acl=acl,
|
||||
keepalive=self.args.keepalive,
|
||||
tcp_keepidle=self.args.tcp_keepidle,
|
||||
tcp_keepintvl=self.args.tcp_keepintvl,
|
||||
tcp_keepcnt=self.args.tcp_keepcnt
|
||||
)
|
||||
signal.pause()
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue