From 467a0816651d3c3de93ef3756f5f6b63fa801364 Mon Sep 17 00:00:00 2001 From: nightcityblade Date: Sun, 16 Aug 2026 11:26:32 +0800 Subject: [PATCH] Set TCP_NODELAY on pydevd client connections --- .../pydevd/_pydevd_bundle/pydevd_comm.py | 4 ++++ .../pydevd/tests_python/test_pydevd_comm.py | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/debugpy/_vendored/pydevd/tests_python/test_pydevd_comm.py 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, + )