1_7_1.md

doc/release_notes/1_7_1.md

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 :closing state.

  • 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 :memory by 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.

  • :auth plugin: when loaded with the :retries plugin, 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_limiter plugin will use this work to retry rate-limited responses without having to set setting :retry_change_requests to 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_bidi plugin: fix internal state preventing bidi requests from being retried.

  • :stream_bidi plugin: will only allow initial request body being passed using :body param (others, like :json, will raise an exception)

  • https resolver: return :idle on 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). *