Bug fixes
-
Implemented binding to IPv6 addresses in the pytest server fixture.
Related issues and pull requests on GitHub:
#4650. -
Fixed StreamResponse.prepared to return True after EOF is sent -- by :user:
arthurdarcet
.Related issues and pull requests on GitHub:
#5343. -
Fixed
Response.text
when body is aPayload
-- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#6485. -
Added support for URL credentials with empty (zero-length) username, e.g.
https://:password@host
-- by :user:shuckc
Related issues and pull requests on GitHub:
#6494. -
Fixed handling of some file-like objects (e.g.
tarfile.extractfile()
) which raiseAttributeError
instead ofOSError
whenfileno
fails for streaming payload data -- by :user:ReallyReivax
.Related issues and pull requests on GitHub:
#6732. -
Stopped logging exceptions from
web.run_app()
that would be raised regardless -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#6807. -
Changed
make_mocked_request()
to use empty payload by default -- by :user:rahulnht
.Related issues and pull requests on GitHub:
#7167. -
Used more precise type for
ClientResponseError.headers
, fixing some type errors when using them -- by :user:Dreamorcerer
.Related issues and pull requests on GitHub:
#8768. -
Fixed Python parser chunked handling with multiple Transfer-Encoding values -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8823. -
Changed behavior when returning an invalid response to send a 500 response -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8845. -
Stopped adding a default Content-Type header when response has no content -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8858. -
Fixed an unclosed transport
ResourceWarning
on web handlers -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#8875. -
Fixed error handling after 100-continue so server sends 500 response instead of disconnecting -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8876. -
Fixed response reading from closed session to throw an error immediately instead of timing out -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8878. -
Fixed web router not matching pre-encoded URLs (requires yarl 1.9.6+) -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8898. -
Fixed
CancelledError
from one cleanup context stopping other contexts from completing -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#8908. -
Fixed
Site.name
when host is an empty string -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#8929. -
Fixed resolve_host() 'Task was destroyed but is pending' errors -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8967. -
Fixed changing scheme/host in
Response.clone()
for absolute URLs -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#8990. -
Fixed client incorrectly reusing a connection when the previous message had not been fully sent -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8992. -
Fixed an error when trying to add a route for multiple methods with a path containing a regex pattern -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8998. -
Updated Python parser to reject messages after a close message, matching C parser behaviour -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#9018. -
Fixed creation of
SSLContext
inside of :py:class:aiohttp.TCPConnector
with multiple event loops in different threads -- by :user:bdraco
.Related issues and pull requests on GitHub:
#9029. -
Fixed (on Python 3.11+) some edge cases where a task cancellation may get incorrectly suppressed -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#9030. -
Fixed the incorrect use of flags for
getnameinfo()
in the Resolver --by :user:GitNMLee
Link-Local IPv6 addresses can now be handled by the Resolver correctly.
Related issues and pull requests on GitHub:
#9032. -
Fixed exception information getting lost on
HttpProcessingError
-- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#9052. -
Fixed
If-None-Match
not using weak comparison -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#9063. -
Fixed compressed requests failing when no body was provided -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#9108. -
Added :exc:
aiohttp.ClientConnectionResetError
. Client code that previously threw :exc:ConnectionResetError
will now throw this -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#9137. -
Fixed race condition that could cause server to close connection incorrectly at keepalive timeout -- by :user:
Dreamosorcerer
.Related issues and pull requests on GitHub:
#9140. -
Fixed badly encoded charset crashing when getting response text instead of falling back to charset detector.
Related issues and pull requests on GitHub:
#9160. -
Rejected
\n
inreason
values to avoid sending broken HTTP messages -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#9167. -
Changed :py:meth:
ClientResponse.raise_for_status() <aiohttp.ClientResponse.raise_for_status>
to only release the connection when invoked outside anasync with
context -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#9239.
Features
-
Improved type on
params
to match the underlying type allowed byyarl
-- by :user:lpetre
.Related issues and pull requests on GitHub:
#8564.
Removals and backward incompatible breaking changes
-
Improved middleware performance -- by :user:
bdraco
.The
set_current_app
method was removed fromUrlMappingMatchInfo
because it is no longer used, and it was unlikely external caller would ever use it.Related issues and pull requests on GitHub:
#9200.
Improved documentation
-
Clarified that
GracefulExit
needs to be handled inAppRunner
andServerRunner
when usinghandle_signals=True
. -- by :user:Daste745
Related issues and pull requests on GitHub:
#4414. -
Clarified that auth parameter in ClientSession will persist and be included with any request to any origin, even during redirects to different origins. -- by :user:
MaximZemskov
.Related issues and pull requests on GitHub:
#6764. -
Clarified which timeout exceptions happen on which timeouts -- by :user:
Dreamsorcerer
.Related issues and pull requests on GitHub:
#8968. -
Updated
ClientSession
parameters to match current code -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#8991.
Packaging updates and notes for downstreams
-
Fixed
test_client_session_timeout_zero
to not require internet access -- by :user:Dreamsorcerer
.Related issues and pull requests on GitHub:
#9004.
Miscellaneous internal changes
-
Improved performance of making requests when there are no auto headers to skip -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#8847. -
Exported
aiohttp.TraceRequestHeadersSentParams
-- by :user:Hadock-is-ok
.Related issues and pull requests on GitHub:
#8947. -
Avoided tracing overhead in the http writer when there are no active traces -- by user:
bdraco
.Related issues and pull requests on GitHub:
#9031. -
Improved performance of reify Cython implementation -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#9054. -
Use :meth:
URL.extend_query() <yarl.URL.extend_query>
to extend query params (requires yarl 1.11.0+) -- by :user:bdraco
.If yarl is older than 1.11.0, the previous slower hand rolled version will be used.
Related issues and pull requests on GitHub:
#9068. -
Improved performance of checking if a host is an IP Address -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#9095. -
Significantly improved performance of middlewares -- by :user:
bdraco
.The construction of the middleware wrappers is now cached and is built once per handler instead of on every request.
-
Improved performance of web requests -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#9168, #9169, #9172, #9174, #9175, #9241. -
Improved performance of starting web requests when there is no response prepare hook -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#9173. -
Significantly improved performance of expiring cookies -- by :user:
bdraco
.Expiring cookies has been redesigned to use :mod:
heapq
instead of a linear search, to better scale.Related issues and pull requests on GitHub:
#9203. -
Significantly sped up filtering cookies -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#9204.