|
|
@ -26,6 +26,7 @@ import logging |
|
|
|
import binascii |
|
|
|
import traceback |
|
|
|
import random |
|
|
|
import platform |
|
|
|
|
|
|
|
from shadowsocks import encrypt, obfs, eventloop, shell, common |
|
|
|
from shadowsocks.common import pre_parse_header, parse_header |
|
|
@ -564,9 +565,10 @@ class TCPRelayHandler(object): |
|
|
|
else: |
|
|
|
remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_NODELAY, 1) |
|
|
|
remote_sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) |
|
|
|
remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 120) |
|
|
|
remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 20) |
|
|
|
remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 5) |
|
|
|
if platform.system() != 'Windows': |
|
|
|
remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPIDLE, 120) |
|
|
|
remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPINTVL, 20) |
|
|
|
remote_sock.setsockopt(socket.SOL_TCP, socket.TCP_KEEPCNT, 5) |
|
|
|
|
|
|
|
if not self._is_local: |
|
|
|
bind_addr = '' |
|
|
|