diff options
-rwxr-xr-x | Doc/library/socket.rst | 2 | ||||
-rwxr-xr-x | Lib/test/test_socket.py | 7 | ||||
-rw-r--r-- | Misc/NEWS.d/next/macOS/2021-03-29-21-11-23.bpo-34932.f3Hdyd.rst | 1 | ||||
-rw-r--r-- | Modules/socketmodule.c | 4 |
4 files changed, 14 insertions, 0 deletions
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst index d67df47..5634d81 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 828d1f3..c09f11e 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 0000000..d3a52c9 --- /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 142cc7c..9233430 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -8159,6 +8159,10 @@ PyInit__socket(void) #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); #endif |