From bb284d082a89fc812a01250cfa3a7f154c5dc1dc Mon Sep 17 00:00:00 2001 From: grossmj Date: Sat, 12 Jan 2019 16:50:15 +0700 Subject: [PATCH] Set socket options SO_KEEPALIVE and TCP_NODELAY for embedded Telnet server. Ref #1335 --- gns3server/utils/asyncio/telnet_server.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gns3server/utils/asyncio/telnet_server.py b/gns3server/utils/asyncio/telnet_server.py index 439e74120..7c9e7397d 100644 --- a/gns3server/utils/asyncio/telnet_server.py +++ b/gns3server/utils/asyncio/telnet_server.py @@ -15,6 +15,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +import socket import asyncio import asyncio.subprocess import struct @@ -184,6 +185,12 @@ async def _write_intro(self, writer, binary=False, echo=False, naws=False): await writer.drain() async def run(self, network_reader, network_writer): + + sock = network_writer.get_extra_info("socket") + sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) + sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) + #log.debug("New connection from {}".format(sock.getpeername())) + # Keep track of connected clients connection = self._connection_factory(network_reader, network_writer, self._window_size_changed_callback) self._connections[network_writer] = connection