From: Shane Harvey Date: Wed, 14 Jul 2021 22:53:15 +0000 (-0700) Subject: bpo-34932: Add socket.TCP_KEEPALIVE for macOS (GH-25079) X-Git-Tag: v3.11.0a1~677 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d59d7374a364c4e5c2b9a83d8e4543ee494285b8;p=thirdparty%2FPython%2Fcpython.git bpo-34932: Add socket.TCP_KEEPALIVE for macOS (GH-25079) --- diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index d67df474608d..5634d81cf7e7 100755 --- a/Doc/library/socket.rst +++ b/Doc/library/socket.rst @@ -381,6 +381,8 @@ Constants .. versionchanged:: 3.10 ``IP_RECVTOS`` was added. + Added ``TCP_KEEPALIVE``. On MacOS this constant can be used in the same + way that ``TCP_KEEPIDLE`` is used on Linux. .. data:: AF_CAN PF_CAN diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py index 828d1f3dcc67..c09f11e0f000 100755 --- a/Lib/test/test_socket.py +++ b/Lib/test/test_socket.py @@ -6446,6 +6446,12 @@ class LinuxKernelCryptoAPI(unittest.TestCase): sock.bind(("type", "n" * 64)) +@unittest.skipUnless(sys.platform == 'darwin', 'macOS specific test') +class TestMacOSTCPFlags(unittest.TestCase): + def test_tcp_keepalive(self): + self.assertTrue(socket.TCP_KEEPALIVE) + + @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows") class TestMSWindowsTCPFlags(unittest.TestCase): knownTCPFlags = { @@ -6704,6 +6710,7 @@ def test_main(): SendfileUsingSendfileTest, ]) tests.append(TestMSWindowsTCPFlags) + tests.append(TestMacOSTCPFlags) thread_info = threading_helper.threading_setup() support.run_unittest(*tests) diff --git a/Misc/NEWS.d/next/macOS/2021-03-29-21-11-23.bpo-34932.f3Hdyd.rst b/Misc/NEWS.d/next/macOS/2021-03-29-21-11-23.bpo-34932.f3Hdyd.rst new file mode 100644 index 000000000000..d3a52c9fc37b --- /dev/null +++ b/Misc/NEWS.d/next/macOS/2021-03-29-21-11-23.bpo-34932.f3Hdyd.rst @@ -0,0 +1 @@ +Add socket.TCP_KEEPALIVE support for macOS. Patch by Shane Harvey. diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 142cc7c8a748..9233430667c2 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -8158,6 +8158,10 @@ PyInit__socket(void) #endif #ifdef TCP_KEEPIDLE PyModule_AddIntMacro(m, TCP_KEEPIDLE); +#endif + /* TCP_KEEPALIVE is OSX's TCP_KEEPIDLE equivalent */ +#if defined(__APPLE__) && defined(TCP_KEEPALIVE) + PyModule_AddIntMacro(m, TCP_KEEPALIVE); #endif #ifdef TCP_KEEPINTVL PyModule_AddIntMacro(m, TCP_KEEPINTVL);