mirror of
https://github.com/alexbers/mtprotoproxy.git
synced 2026-03-14 07:13:09 +00:00
ignore errors in setsockopt on old kernels
This commit is contained in:
@@ -639,24 +639,31 @@ async def handle_handshake(reader, writer):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def try_setsockopt(sock, level, option, value):
|
||||||
|
try:
|
||||||
|
sock.setsockopt(level, option, value)
|
||||||
|
except OSError as E:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
def set_keepalive(sock, interval=40, attempts=5):
|
def set_keepalive(sock, interval=40, attempts=5):
|
||||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
|
sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
|
||||||
if hasattr(socket, "TCP_KEEPIDLE"):
|
if hasattr(socket, "TCP_KEEPIDLE"):
|
||||||
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, interval)
|
try_setsockopt(sock, socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, interval)
|
||||||
if hasattr(socket, "TCP_KEEPINTVL"):
|
if hasattr(socket, "TCP_KEEPINTVL"):
|
||||||
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, interval)
|
try_setsockopt(sock, socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, interval)
|
||||||
if hasattr(socket, "TCP_KEEPCNT"):
|
if hasattr(socket, "TCP_KEEPCNT"):
|
||||||
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, attempts)
|
try_setsockopt(sock, socket.IPPROTO_TCP, socket.TCP_KEEPCNT, attempts)
|
||||||
|
|
||||||
|
|
||||||
def set_ack_timeout(sock, timeout):
|
def set_ack_timeout(sock, timeout):
|
||||||
if hasattr(socket, "TCP_USER_TIMEOUT"):
|
if hasattr(socket, "TCP_USER_TIMEOUT"):
|
||||||
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_USER_TIMEOUT, timeout*1000)
|
try_setsockopt(sock, socket.IPPROTO_TCP, socket.TCP_USER_TIMEOUT, timeout*1000)
|
||||||
|
|
||||||
|
|
||||||
def set_bufsizes(sock, recv_buf, send_buf):
|
def set_bufsizes(sock, recv_buf, send_buf):
|
||||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, recv_buf)
|
try_setsockopt(sock, socket.SOL_SOCKET, socket.SO_RCVBUF, recv_buf)
|
||||||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, send_buf)
|
try_setsockopt(sock, socket.SOL_SOCKET, socket.SO_SNDBUF, send_buf)
|
||||||
|
|
||||||
|
|
||||||
async def open_connection_tryer(addr, port, limit, timeout, max_attempts=3):
|
async def open_connection_tryer(addr, port, limit, timeout, max_attempts=3):
|
||||||
|
|||||||
Reference in New Issue
Block a user