Skip to content

Commit c80c282

Browse files
GH-88968: Add notes about socket ownership transfers (GH-97936)
(cherry picked from commit 74ea204) Co-authored-by: Guido van Rossum <[email protected]>
1 parent 6f23472 commit c80c282

File tree

2 files changed

+48
-0
lines changed

2 files changed

+48
-0
lines changed

Doc/library/asyncio-eventloop.rst

+24
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,12 @@ Opening network connections
450450
*happy_eyeballs_delay*, *interleave*
451451
and *local_addr* should be specified.
452452

453+
.. note::
454+
455+
The *sock* argument transfers ownership of the socket to the
456+
transport created. To close the socket, call the transport's
457+
:meth:`~asyncio.BaseTransport.close` method.
458+
453459
* *local_addr*, if given, is a ``(local_host, local_port)`` tuple used
454460
to bind the socket locally. The *local_host* and *local_port*
455461
are looked up using ``getaddrinfo()``, similarly to *host* and *port*.
@@ -555,6 +561,12 @@ Opening network connections
555561
transport. If specified, *local_addr* and *remote_addr* should be omitted
556562
(must be :const:`None`).
557563

564+
.. note::
565+
566+
The *sock* argument transfers ownership of the socket to the
567+
transport created. To close the socket, call the transport's
568+
:meth:`~asyncio.BaseTransport.close` method.
569+
558570
See :ref:`UDP echo client protocol <asyncio-udp-echo-client-protocol>` and
559571
:ref:`UDP echo server protocol <asyncio-udp-echo-server-protocol>` examples.
560572

@@ -644,6 +656,12 @@ Creating network servers
644656
* *sock* can optionally be specified in order to use a preexisting
645657
socket object. If specified, *host* and *port* must not be specified.
646658

659+
.. note::
660+
661+
The *sock* argument transfers ownership of the socket to the
662+
server created. To close the socket, call the server's
663+
:meth:`~asyncio.Server.close` method.
664+
647665
* *backlog* is the maximum number of queued connections passed to
648666
:meth:`~socket.socket.listen` (defaults to 100).
649667

@@ -729,6 +747,12 @@ Creating network servers
729747
* *sock* is a preexisting socket object returned from
730748
:meth:`socket.accept <socket.socket.accept>`.
731749

750+
.. note::
751+
752+
The *sock* argument transfers ownership of the socket to the
753+
transport created. To close the socket, call the transport's
754+
:meth:`~asyncio.BaseTransport.close` method.
755+
732756
* *ssl* can be set to an :class:`~ssl.SSLContext` to enable SSL over
733757
the accepted connections.
734758

Doc/library/asyncio-stream.rst

+24
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ and work with streams:
6767
The rest of the arguments are passed directly to
6868
:meth:`loop.create_connection`.
6969

70+
.. note::
71+
72+
The *sock* argument transfers ownership of the socket to the
73+
:class:`StreamWriter` created. To close the socket, call its
74+
:meth:`~asyncio.StreamWriter.close` method.
75+
7076
.. versionchanged:: 3.7
7177
Added the *ssl_handshake_timeout* parameter.
7278

@@ -103,6 +109,12 @@ and work with streams:
103109
The rest of the arguments are passed directly to
104110
:meth:`loop.create_server`.
105111

112+
.. note::
113+
114+
The *sock* argument transfers ownership of the socket to the
115+
server created. To close the socket, call the server's
116+
:meth:`~asyncio.Server.close` method.
117+
106118
.. versionchanged:: 3.7
107119
Added the *ssl_handshake_timeout* and *start_serving* parameters.
108120

@@ -123,6 +135,12 @@ and work with streams:
123135

124136
See also the documentation of :meth:`loop.create_unix_connection`.
125137

138+
.. note::
139+
140+
The *sock* argument transfers ownership of the socket to the
141+
:class:`StreamWriter` created. To close the socket, call its
142+
:meth:`~asyncio.StreamWriter.close` method.
143+
126144
.. availability:: Unix.
127145

128146
.. versionchanged:: 3.7
@@ -143,6 +161,12 @@ and work with streams:
143161

144162
See also the documentation of :meth:`loop.create_unix_server`.
145163

164+
.. note::
165+
166+
The *sock* argument transfers ownership of the socket to the
167+
server created. To close the socket, call the server's
168+
:meth:`~asyncio.Server.close` method.
169+
146170
.. availability:: Unix.
147171

148172
.. versionchanged:: 3.7

0 commit comments

Comments
 (0)