Skip to content

Commit d559f11

Browse files
committed
Merge branch '3.15'
2 parents 59684b5 + 958d949 commit d559f11

13 files changed

Lines changed: 106 additions & 12 deletions

CHANGES.rst

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,112 @@
1010

1111
.. towncrier release notes start
1212
13+
3.14.1 (2026-06-07)
14+
===================
15+
16+
Bug fixes
17+
---------
18+
19+
- Fixed a race condition in :py:class:`~aiohttp.TCPConnector` where closing the connector while a DNS resolution was in-flight could raise :py:exc:`AttributeError` instead of :py:exc:`~aiohttp.ClientConnectionError` -- by :user:`goingforstudying-ctrl`.
20+
21+
22+
*Related issues and pull requests on GitHub:*
23+
:issue:`12497`.
24+
25+
26+
27+
- Fixed ``CancelledError`` not closing a connection -- by :user:`aiolibsbot`.
28+
29+
30+
*Related issues and pull requests on GitHub:*
31+
:issue:`12795`.
32+
33+
34+
35+
- Tightened up some websocket parser checks -- by :user:`Dreamsorcerer`.
36+
37+
38+
*Related issues and pull requests on GitHub:*
39+
:issue:`12817`.
40+
41+
42+
43+
- Fixed :class:`~aiohttp.CookieJar` dropping the host-only flag of cookies when persisted with :meth:`~aiohttp.CookieJar.save` and reloaded with :meth:`~aiohttp.CookieJar.load`, so a cookie set without a ``Domain`` attribute is again scoped to the exact host that set it after a reload; the absolute expiration deadline is now persisted as well, so a reloaded cookie keeps its original lifetime instead of being rescheduled from the load time. :meth:`~aiohttp.CookieJar.load` now replaces the jar contents rather than merging onto prior state, and loaded cookies pass through the same acceptance rules as :meth:`~aiohttp.CookieJar.update_cookies`, so a cookie for an IP-address host is dropped when loaded into a jar created without ``unsafe=True`` -- by :user:`bdraco`.
44+
45+
46+
*Related issues and pull requests on GitHub:*
47+
:issue:`12824`.
48+
49+
50+
51+
- Scoped :class:`~aiohttp.DigestAuthMiddleware` credentials to the origin of the first request it handles, so a redirect to a different origin no longer triggers a digest response computed from the configured credentials; a challenge from another origin is only answered when that origin falls within a protection space advertised by the anchor origin through the RFC 7616 ``domain`` directive -- by :user:`bdraco`.
52+
53+
54+
*Related issues and pull requests on GitHub:*
55+
:issue:`12825`.
56+
57+
58+
59+
- Fixed the C HTTP parser not enforcing ``max_line_size`` on a request target or response reason phrase that is split across multiple reads; each fragment was checked on its own, so an accumulated line could exceed the limit without raising ``LineTooLong``. The accumulated length is now checked, matching the pure-Python parser -- by :user:`bdraco`.
60+
61+
62+
*Related issues and pull requests on GitHub:*
63+
:issue:`12826`.
64+
65+
66+
67+
- Changed :class:`~aiohttp.TCPConnector` to reject legacy non-canonical numeric IPv4 host forms such as ``2130706433``, ``017700000001`` and ``127.1`` with :exc:`~aiohttp.InvalidUrlClientError`; only canonical dotted-quad IPv4 literals are now treated as IP address literals, while every other host is sent through the configured resolver -- by :user:`bdraco`.
68+
69+
70+
*Related issues and pull requests on GitHub:*
71+
:issue:`12827`.
72+
73+
74+
75+
- Fixed :meth:`~aiohttp.StreamReader.readany` and :meth:`~aiohttp.StreamReader.read_nowait` joining data fed back into the buffer during the call (when draining below the low water mark resumes reading) into a single unbounded :class:`bytes`; a call now returns only the chunks that were buffered when it started, keeping the drain of an unread auto-decompressed request body bounded by the read buffer -- by :user:`bdraco`.
76+
77+
78+
*Related issues and pull requests on GitHub:*
79+
:issue:`12828`.
80+
81+
82+
83+
- Bounded the number of parsed-but-unhandled pipelined HTTP/1 requests buffered per connection on the server; once the queue reaches an internal limit the parser stops emitting and the transport is paused, resuming as the request handler drains the queue, so a client keeping one handler busy can no longer accumulate an unbounded backlog of pipelined requests -- by :user:`bdraco`.
84+
85+
86+
*Related issues and pull requests on GitHub:*
87+
:issue:`12830`.
88+
89+
90+
91+
- Fixed :meth:`aiohttp.web.Response.write_eof` skipping ``Payload.close()`` when the body write was interrupted by an error or cancellation, for example when a client disconnects mid-response; the payload close hook now runs in a ``finally`` so a :class:`~aiohttp.payload.Payload` body always releases its resources -- by :user:`bdraco`.
92+
93+
94+
*Related issues and pull requests on GitHub:*
95+
:issue:`12831`.
96+
97+
98+
99+
- Fixed the pure-Python HTTP parser not enforcing ``max_line_size`` on a chunk-size line when the whole line arrived in a single read; the limit was only applied to chunk-size metadata split across reads. The complete-line case is now checked too, matching the split-line behavior -- by :user:`bdraco`.
100+
101+
102+
*Related issues and pull requests on GitHub:*
103+
:issue:`12832`.
104+
105+
106+
107+
- Included the per-request ``server_hostname`` override in the :class:`~aiohttp.TCPConnector` connection pool key, so a pooled TLS connection is no longer reused for a request that sets ``server_hostname`` to a different value -- by :user:`bdraco`.
108+
109+
110+
*Related issues and pull requests on GitHub:*
111+
:issue:`12835`.
112+
113+
114+
115+
116+
----
117+
118+
13119
3.14.0 (2026-06-01)
14120
===================
15121

CHANGES/12497.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGES/12795.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGES/12817.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGES/12824.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGES/12825.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGES/12826.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGES/12827.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGES/12828.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

CHANGES/12830.bugfix.rst

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)