1.7.1
Improvements
-
fixed timers handling in the selector loop which caused them to be traversed-for-drop twice on each tick.
-
connection: take proxy connecting states when transitioning to
:closingstate. -
refactored name resolution cache to a cache adapter API with a default memory cache which keeps the current behaviour and will allow to add others.
-
a new option,
:resolver_cache, was added, which is:memoryby default. -
this fixes an issue introduced for multi-ractor support where the cache store would not be thread-safe when used in a non main ractor.
-
:authplugin: when loaded with the:retriesplugin, and the auth value method is dynamic/callable, will recover out-of-the-box from 401 HTTP responses by retrying the request with a newly-generated token. -
the
:rate_limiterplugin will use this work to retry rate-limited responses without having to set setting:retry_change_requeststo true, thereby eliminating a potential issue with non-idempotent requests.
Bugfixes
-
HTTP1 parser: clear buffer on reset.
-
http1 fix: handle the case in handle_error where the response is an error response
-
:stream_bidiplugin: fix internal state preventing bidi requests from being retried. -
:stream_bidiplugin: will only allow initial request body being passed using:bodyparam (others, like:json, will raise an exception) -
https resolver: return
:idleon state calls when no connection is available (sometimes called in internal log messages). -
selector loop fix: when there are no selectables and an interval is passed, sleep instead of returning (thereby avoiding potential busy loop). *