0_10_1.md

doc/release_notes/0_10_1.md
Last Update: 2024-04-03 14:03:54 +0000

0.10.1

Improvements

URL-encoded nested params

url encoder now supports nested params, which is a standard of rack-based frameworks:

HTTPX.post("https://httpbin.org/post", form: { a: { b: 1 }, c: [2, 3] })
# a[b]=1&c[]=2&c[]=3

This encoding scheme is now the standard for URL-encoded request bodies, query params, and :multipart plugin requests.

Socks4 IPv6 addresses

HTTPX supports IPv6 Socks4 proxies now. This support is restricted to rubies where IPAddr#hton is implemented though, so you are encouraged to upgrade.

More verbose HTTP Errors

HTTPX::Response#raise_for_status was raising exceptions for client/server HTTP errors codes (4xx/5xx). However, only the status code was part of the message.

From now on, both headers and the responnse payload will also appear, so expected more verbosity, but also more meaningful information.

Bugfixes

  • HTTP/2 and HTTP/1.1 exhausted connections now get properly migrated into a new connection;

  • HTTP/2 421 responses will now correctly migrate the connection and pending requests to HTTP/1.1 (a hanging loop was being caused);

  • HTTP/2 connection failed with a GOAWAY settings timeout will now return error responses (instead of hanging indefinitely);

  • Non-IP proxy name-resolving errors will now move on to the next available proxy in the list (instead of hanging indefinitely);

  • Non-IP DNS resolve errors for native and https variants will now return the appropriate error response (instead of hanging indefinitely);

Chore

  • HTTPX.plugins is now officially deprecated (use HTTPX.plugin instead);