Skip to content

Commit 12211f7

Browse files
committed
Merge branch '3.15'
2 parents b786c39 + 47eeeb4 commit 12211f7

25 files changed

Lines changed: 233 additions & 58 deletions

CHANGES.rst

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

1111
.. towncrier release notes start
1212
13+
3.14.2 (2026-07-20)
14+
===================
15+
16+
Bug fixes
17+
---------
18+
19+
- Fixed :py:attr:`~aiohttp.web.StreamResponse.last_modified` rounding a
20+
:class:`datetime.datetime` with a fractional second down.
21+
22+
23+
*Related issues and pull requests on GitHub:*
24+
:issue:`5303`.
25+
26+
27+
28+
- Fixed resolving ``localhost`` on Windows to fall back without ``AI_ADDRCONFIG``
29+
when the first lookup fails, so ``localhost`` still works without an active
30+
network.
31+
32+
33+
*Related issues and pull requests on GitHub:*
34+
:issue:`5357`.
35+
36+
37+
38+
- Rejected multipart body parts whose ``Content-Length`` header is not a
39+
plain sequence of digits (e.g. ``+5``, ``-1``, ``1_0``), matching the
40+
strictness of the main request parser per :rfc:`9110#section-8.6`
41+
-- by :user:`dxbjavid`.
42+
43+
44+
*Related issues and pull requests on GitHub:*
45+
:issue:`12794`.
46+
47+
48+
49+
- Fixed ``GunicornWebWorker`` endlessly reloading when app fails during startup -- by :user:`Dreamsorcerer`.
50+
51+
52+
*Related issues and pull requests on GitHub:*
53+
:issue:`12879`.
54+
55+
56+
57+
- Fixed some inconsistent case sensitivity on request methods -- by :user:`Dreamsorcerer`.
58+
59+
60+
*Related issues and pull requests on GitHub:*
61+
:issue:`12931`.
62+
63+
64+
65+
- Fixed ``IndexError: string index out of range`` in ``parse_content_disposition``
66+
when a header parameter has an empty value (e.g. ``filename=``).
67+
-- by :user:`JSap0914`.
68+
69+
70+
*Related issues and pull requests on GitHub:*
71+
:issue:`12948`.
72+
73+
74+
75+
- Fixed the ``sock_read`` timeout being re-armed on a keep-alive connection after
76+
it had been returned to the pool. An idle pooled connection could be left with a
77+
pending read timeout that fired and poisoned it, so the next request reusing the
78+
connection failed immediately with :exc:`aiohttp.SocketTimeoutError`. The read
79+
timeout is now only rescheduled when resuming a transport that was actually
80+
paused -- by :user:`daragok`.
81+
82+
83+
*Related issues and pull requests on GitHub:*
84+
:issue:`12953`, :issue:`12954`.
85+
86+
87+
88+
- Fixed the client decompressing frames when ``permessage-deflate`` was not negotiated -- by :user:`Dreamsorcerer`.
89+
90+
91+
*Related issues and pull requests on GitHub:*
92+
:issue:`12976`.
93+
94+
95+
96+
- Fixed ``DigestAuthMiddleware`` raising an ``IndexError`` on empty domain -- by :user:`Dreamsorcerer`.
97+
98+
99+
*Related issues and pull requests on GitHub:*
100+
:issue:`12983`.
101+
102+
103+
104+
- Fixed :class:`~aiohttp.DigestAuthMiddleware` corrupting the ``Digest``
105+
challenge when a ``WWW-Authenticate`` response offered more than one
106+
authentication scheme -- by :user:`Dreamsorcerer`.
107+
108+
109+
*Related issues and pull requests on GitHub:*
110+
:issue:`12984`.
111+
112+
113+
114+
- Fixed client not closing cleanly after an exception -- by :user:`Dreamsorcerer`.
115+
116+
117+
*Related issues and pull requests on GitHub:*
118+
:issue:`12985`.
119+
120+
121+
122+
- Fixed control frames breaking fragmented WebSocket messages -- by :user:`arshsmith1`.
123+
124+
125+
*Related issues and pull requests on GitHub:*
126+
:issue:`12988`.
127+
128+
129+
130+
- Fixed ``parse_content_disposition`` rejecting otherwise-valid
131+
``Content-Disposition`` header values that contain optional whitespace (OWS)
132+
around the disposition type (e.g. ``"form-data ; name=\"field\""``).
133+
The disposition type is now stripped before token validation, consistent with
134+
how parameter keys are already handled -- by :user:`JSap0914`.
135+
136+
137+
*Related issues and pull requests on GitHub:*
138+
:issue:`12996`.
139+
140+
141+
142+
- Fixed an :exc:`IndexError` in the pure-Python HTTP parser -- by :user:`Dreamsorcerer`.
143+
144+
145+
*Related issues and pull requests on GitHub:*
146+
:issue:`13001`.
147+
148+
149+
150+
- Fixed parsing optional whitespace in Content-Disposition -- by :user:`Dreamsorcerer`.
151+
152+
153+
*Related issues and pull requests on GitHub:*
154+
:issue:`13002`.
155+
156+
157+
158+
- Fixed request body not being read on rejected WebSocket upgrades -- by :user:`Dreamsorcerer`.
159+
160+
161+
*Related issues and pull requests on GitHub:*
162+
:issue:`13016`.
163+
164+
165+
166+
- Fixed :exc:`LookupError` (and an unguarded :exc:`UnicodeDecodeError`) escaping
167+
``Content-Disposition`` parsing when a multipart part supplies an extended
168+
parameter with an unknown charset
169+
-- by :user:`arshsmith1`.
170+
171+
172+
*Related issues and pull requests on GitHub:*
173+
:issue:`13042`.
174+
175+
176+
177+
- Fixed ``escape_quotes`` in the Digest authentication middleware not escaping
178+
backslashes, so a ``WWW-Authenticate`` challenge value containing a backslash
179+
could break out of its quoted-string in the generated ``Authorization`` header
180+
-- by :user:`dxbjavid`.
181+
182+
183+
*Related issues and pull requests on GitHub:*
184+
:issue:`13054`.
185+
186+
187+
188+
- Fixed Python parser not rejecting a bare ``LF`` in the request line -- by :user:`Dreamsorcerer`.
189+
190+
191+
*Related issues and pull requests on GitHub:*
192+
:issue:`13136`.
193+
194+
195+
196+
- Fixed the C HTTP parser folding the fragment into the query string for an
197+
origin-form request target with an empty query (e.g. ``/path?#frag``),
198+
which diverged from the pure-Python parser -- by :user:`GiulioDER`.
199+
200+
201+
*Related issues and pull requests on GitHub:*
202+
:issue:`13171`.
203+
204+
205+
206+
- Fixed the C parser reporting newer HTTP methods such as ``QUERY`` as ``<unknown>``;
207+
the method table is now derived from the vendored llhttp instead of a hand-maintained count
208+
-- by :user:`Dreamsorcerer`.
209+
210+
211+
*Related issues and pull requests on GitHub:*
212+
:issue:`13174`.
213+
214+
215+
216+
217+
Packaging updates and notes for downstreams
218+
-------------------------------------------
219+
220+
- Upgraded ``llhttp`` to v9.4.2 -- by :user:`Dreamsorcerer`.
221+
222+
223+
*Related issues and pull requests on GitHub:*
224+
:issue:`12956`.
225+
226+
227+
228+
229+
Contributor-facing changes
230+
--------------------------
231+
232+
- Added admin documentation on incident response and on running reproducer code
233+
safely, covering security vulnerability handling and supply-chain, account, and
234+
CI/infrastructure compromise -- by :user:`Dreamsorcerer`.
235+
236+
237+
*Related issues and pull requests on GitHub:*
238+
:issue:`12914`.
239+
240+
241+
242+
243+
----
244+
245+
13246
3.14.1 (2026-06-07)
14247
===================
15248

CHANGES/12794.bugfix.rst

Lines changed: 0 additions & 4 deletions
This file was deleted.

CHANGES/12879.bugfix.rst

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

CHANGES/12914.contrib.rst

Lines changed: 0 additions & 3 deletions
This file was deleted.

CHANGES/12931.bugfix.rst

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

CHANGES/12948.bugfix.rst

Lines changed: 0 additions & 3 deletions
This file was deleted.

CHANGES/12953.bugfix.rst

Lines changed: 0 additions & 6 deletions
This file was deleted.

CHANGES/12954.bugfix.rst

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

CHANGES/12956.packaging.rst

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

CHANGES/12976.bugfix.rst

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

0 commit comments

Comments
 (0)