diff --git a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py index b935320c..22cd190b 100644 --- a/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py +++ b/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py @@ -525,6 +525,10 @@ def start_client(host, port): s.setsockopt(socket_module.IPPROTO_TCP, socket_module.TCP_KEEPCNT, 5) except (AttributeError, OSError): pass # May not be available everywhere. + try: + s.setsockopt(socket_module.IPPROTO_TCP, socket_module.TCP_NODELAY, 1) + except (AttributeError, OSError): + pass # May not be available everywhere. try: # 10 seconds default timeout diff --git a/src/debugpy/_vendored/pydevd/tests_python/test_pydevd_comm.py b/src/debugpy/_vendored/pydevd/tests_python/test_pydevd_comm.py new file mode 100644 index 00000000..68742f98 --- /dev/null +++ b/src/debugpy/_vendored/pydevd/tests_python/test_pydevd_comm.py @@ -0,0 +1,16 @@ +from unittest import mock + +from _pydevd_bundle import pydevd_comm + + +def test_start_client_sets_tcp_nodelay(monkeypatch): + sock = mock.Mock() + monkeypatch.setattr(pydevd_comm, "socket", lambda *_: sock) + monkeypatch.setattr(pydevd_comm.socket_module, "getaddrinfo", lambda *_: []) + + assert pydevd_comm.start_client("localhost", 5678) is sock + sock.setsockopt.assert_any_call( + pydevd_comm.socket_module.IPPROTO_TCP, + pydevd_comm.socket_module.TCP_NODELAY, + 1, + )