Merge branch 'feature/tcp_fastopen' into tcp_fast

This commit is contained in:
benoitc 2015-12-24 09:51:18 +01:00
commit c66a9722f6
2 changed files with 42 additions and 2 deletions

View File

@ -1692,6 +1692,7 @@ class DoHandshakeOnConnect(Setting):
Whether to perform SSL handshake on socket connect (see stdlib ssl module's) Whether to perform SSL handshake on socket connect (see stdlib ssl module's)
""" """
if sys.version_info >= (2, 7): if sys.version_info >= (2, 7):
class Ciphers(Setting): class Ciphers(Setting):
name = "ciphers" name = "ciphers"
@ -1702,3 +1703,37 @@ if sys.version_info >= (2, 7):
desc = """\ desc = """\
Ciphers to use (see stdlib ssl module's) Ciphers to use (see stdlib ssl module's)
""" """
class AllowTCPFastOpen(Setting):
name = "allow_tcp_fast_open"
section = "Server Socket"
cli = ["--allow-tcp-fast-open"]
validator = validate_bool
default = False
action = "store_true"
desc = """\
Whether the server will allow the TCP Fast Open.
Available on Linux >= 3.7.1, Python>= 3.4
More info: http://research.google.com/pubs/pub37517.html
.. versionadded:: 19.5
"""
class TCPFastOpenQueue(Setting):
name = "tcp_fast_open_queue"
section = "Server Socket"
cli = ["--tcp-fast-open-queue"]
meta = "INT"
validator = validate_pos_int
type = int
default = 5
desc = """\
The size of the TCP Fast Open queue. If the number of connections exceed
this value, the other connections are proceed with a normal 3-way.
.. versionadded:: 19.5
"""

View File

@ -75,6 +75,11 @@ class TCPSocket(BaseSocket):
def set_options(self, sock, bound=False): def set_options(self, sock, bound=False):
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
if hasattr(socket, 'TCP_FASTOPEN') and self.cfg.allow_tcp_fast_open:
sock.setsockopt(socket.SOL_TCP, socket.TCP_FASTOPEN,
self.cfg.tcp_fast_open_queue)
return super(TCPSocket, self).set_options(sock, bound=bound) return super(TCPSocket, self).set_options(sock, bound=bound)