summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShane Harvey <shnhrv@gmail.com>2021-07-14 22:53:15 (GMT)
committerGitHub <noreply@github.com>2021-07-14 22:53:15 (GMT)
commitd59d7374a364c4e5c2b9a83d8e4543ee494285b8 (patch)
treee53a89ab474d7671bd0e21fda5801bb4eda641de
parent2b47af63982e4ccc09ae14c7c66ba115804bbbf6 (diff)
downloadcpython-d59d7374a364c4e5c2b9a83d8e4543ee494285b8.zip
cpython-d59d7374a364c4e5c2b9a83d8e4543ee494285b8.tar.gz
cpython-d59d7374a364c4e5c2b9a83d8e4543ee494285b8.tar.bz2
bpo-34932: Add socket.TCP_KEEPALIVE for macOS (GH-25079)
-rwxr-xr-xDoc/library/socket.rst2
-rwxr-xr-xLib/test/test_socket.py7
-rw-r--r--Misc/NEWS.d/next/macOS/2021-03-29-21-11-23.bpo-34932.f3Hdyd.rst1
-rw-r--r--Modules/socketmodule.c4
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