]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-101317: Add `ssl_shutdown_timeout` parameter for `asyncio.StreamWriter.start_tls...
authorbeavailable <beavailable@proton.me>
Wed, 1 Feb 2023 11:03:59 +0000 (19:03 +0800)
committerGitHub <noreply@github.com>
Wed, 1 Feb 2023 11:03:59 +0000 (16:33 +0530)
Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
Doc/library/asyncio-stream.rst
Lib/asyncio/streams.py
Misc/NEWS.d/next/Library/2023-01-26-01-25-56.gh-issue-101317.vWaS1x.rst [new file with mode: 0644]

index c1ae8abb9abcd5dd1fec37c13b25b9bb38e185d3..533bdec8e03993b770c6623f5938cd9975113b79 100644 (file)
@@ -335,7 +335,7 @@ StreamWriter
       returns immediately.
 
    .. coroutinemethod:: start_tls(sslcontext, \*, server_hostname=None, \
-                          ssl_handshake_timeout=None)
+                          ssl_handshake_timeout=None, ssl_shutdown_timeout=None)
 
       Upgrade an existing stream-based connection to TLS.
 
@@ -350,8 +350,16 @@ StreamWriter
         handshake to complete before aborting the connection.  ``60.0`` seconds
         if ``None`` (default).
 
+      * *ssl_shutdown_timeout* is the time in seconds to wait for the SSL shutdown
+        to complete before aborting the connection. ``30.0`` seconds if ``None``
+        (default).
+
       .. versionadded:: 3.11
 
+      .. versionchanged:: 3.12
+         Added the *ssl_shutdown_timeout* parameter.
+
+
    .. method:: is_closing()
 
       Return ``True`` if the stream is closed or in the process of
index 0f9098b4195633c114dcd4496d9e92da339ba622..7d13e961bd2de417874566e0e4792a60580f052a 100644 (file)
@@ -378,7 +378,8 @@ class StreamWriter:
 
     async def start_tls(self, sslcontext, *,
                         server_hostname=None,
-                        ssl_handshake_timeout=None):
+                        ssl_handshake_timeout=None,
+                        ssl_shutdown_timeout=None):
         """Upgrade an existing stream-based connection to TLS."""
         server_side = self._protocol._client_connected_cb is not None
         protocol = self._protocol
@@ -386,7 +387,8 @@ class StreamWriter:
         new_transport = await self._loop.start_tls(  # type: ignore
             self._transport, protocol, sslcontext,
             server_side=server_side, server_hostname=server_hostname,
-            ssl_handshake_timeout=ssl_handshake_timeout)
+            ssl_handshake_timeout=ssl_handshake_timeout,
+            ssl_shutdown_timeout=ssl_shutdown_timeout)
         self._transport = new_transport
         protocol._replace_writer(self)
 
diff --git a/Misc/NEWS.d/next/Library/2023-01-26-01-25-56.gh-issue-101317.vWaS1x.rst b/Misc/NEWS.d/next/Library/2023-01-26-01-25-56.gh-issue-101317.vWaS1x.rst
new file mode 100644 (file)
index 0000000..f1ce0e0
--- /dev/null
@@ -0,0 +1,2 @@
+Add *ssl_shutdown_timeout* parameter for :meth:`asyncio.StreamWriter.start_tls`.
+