Coverage for /pythoncovmergedfiles/medio/medio/src/aiohttp/aiohttp/tcp_helpers.py: 37%
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
Shortcuts on this page
r m x toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1"""Helper methods to tune a TCP connection"""
3import asyncio
4import socket
5from contextlib import suppress
7__all__ = ("tcp_keepalive", "tcp_nodelay")
10if hasattr(socket, "SO_KEEPALIVE"):
12 def tcp_keepalive(transport: asyncio.Transport) -> None:
13 sock = transport.get_extra_info("socket")
14 if sock is not None:
15 sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
17else:
19 def tcp_keepalive(transport: asyncio.Transport) -> None:
20 """Noop when keepalive not supported."""
23def tcp_nodelay(transport: asyncio.Transport, value: bool) -> None:
24 sock = transport.get_extra_info("socket")
26 if sock is None:
27 return
29 if sock.family not in (socket.AF_INET, socket.AF_INET6):
30 return
32 value = bool(value)
34 # socket may be closed already, on windows OSError get raised
35 with suppress(OSError):
36 sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, value)