1.6.3¶ ↑
Features¶ ↑
-
allow redacting only headers, or only the body, when using
debug_redact: :headersordebug_redact: :bodyrespectively.
Improvements¶ ↑
-
systemresolver now works in a non-blocking manner, initiating the dns query in a separate thread and waiting on the pipe after that (it was blocking the main thread during resolution before). -
reduce allocation to a sinfle shared option object when headers are passed as a session-level option, like
HTTPX.with(headers: geaders).get(...) -
privilege using
String#replacein buffer operations (instead of “clean-then-append”). -
using
Array#unshiftinstead ofArray#concatin order to ensure that request ordering is respected in the face of an in-between error which requires reconnect-and-resend. -
replaced more internal callback indirection with plain method calls.
Bugfixes¶ ↑
-
https: prevent modification of the ssl context object when performing a reconnection.
-
compression: do not return early if the decompression buffer yields an empty string (more frequent under jruby 10).
-
response cache: take query params into account when caching or retrieving cached responses.
-
response cache: do not decompress cached responses on body consumption (the response bodies are cached in plaintext).
-
native resolver: pick next timeout associated with the hostname being resolved (and not the hostnames in the queue).
-
pool: assume that, even when signalled that a connection is available, context may be switched to a session which also checks the same connection out, before it’s able to pick it up; in such a case, start from the beginning, until the pool timeout expires.
-
session: forego bookkeeping when a connection is coalesced (instead, allow it to be dropped).
-
digest_auth: make sure that an array is sent back if the probe response fails.
-
alt-svc: when alt-svc handshake happens with more in-flight requests, defer termination to when these requests are made.
-
http2: fix use of unexisting var
exwhen processing the connection closed callback. -
connection: fix potential session dereferencing, which allowed connections to be used across sessions, therefore bypassing needed synchronization and leading to the
undefined method 'after' for nil:NilClasserror. -
selector: close only selected connections (instead of all selectable connections) when an error occurs during IO readiness wait calls.
-
resolvers: correctly propagate abrupt termination errors to the connection objects waiting for the answer.
-
resolvers: when errors happenm force-close unresolved connections (and ensure they’re both pinned to the corresponding session before the error happens, and are unpinned after error is propagated).
-
resolvers: ensure resolvers transition to “closed” state, on all cases, when any error happens.
-
resolvers: ensure that the next hostname is resolved when a timeout happens on the current one.
-
native resolver: fixed duplication of the hostname to resolve in the list of candidates.
-
https resolver: use a
systemresolver to resolve the DoH server hostname (instead of rerouting it to itself). -
https resolver: skip loop error reporting when error happens outside of it.
-
https resolver: close connection on resolve errors, which prevents it from being around in the pool after termination; also deactivate it after successful use.
-
multi resolver: do not check resolvers back into the pool if it’s a multi resolver and the peer is still resolving (and do the check outside of the critical area).
-
sentry adapter: removed usage of deprecated method which has been removed in sentry-ruby 6.0.0.
-
selector: when coalescing connections, pin the current session before merging connections, to prevent it from registering in a selector being used in a different thread, and inadvertedly allowing it to be used across threads.
-
session: fix: always pin connection before early-or-lazy resolution (fixes connection pool accounting under connection coalescing).
Chores¶ ↑
-
logging emits a timestamp as well (to monitor timeouts).
-
:stream_bidiplugin: extends HTTP2 module by using plugin extensions. -
connection: remove session/selector references when closing a connection (prevents leaking them beyond the usage scope).