- Properly handle interim responses (informational
1xx
status codes) in HTTP/2. Now you might get zero or more sequences of:status
and:headers
responses with status1xx
before the final response (with status non-1xx
).
- Emit the remaining buffer as a
:data
response when switching protocols from HTTP/1. - Respect closed-for-writing when streaming data frames in HTTP/2.
- Fix handling of HTTP/2 frames of an unknown type.
- Add support for
SETTINGS_ENABLE_CONNECT_PROTOCOL
HTTP/2 server setting. - Omit the
:scheme
and:path
pseudo headers for HTTP/2 CONNECT. - Fix invalid connection state when data can't be sent.
- Skip expired certs in partial chain hook.
- Add
Mint.HTTP.get_proxy_headers/1
. - Add
Mint.HTTP.module/1
.
- Improve compatibility with OTP 24.
- Support HTTP/1 pipelining when streaming requests.
- Add
Mint.HTTP.get_socket/1
for returning the connection socket. - Improve compatibility with TLS 1.3.
- Fix a bug where we were not ignoring the return value of
:ssl.close/1
and:gen_tcp.close/1
. - Fix a bug where we were not properly handling transport errors when doing ALPN protocol negotiation.
- Fix a bug where we were not handling connection closed errors in a few places.
- Fix a few bugs with passing the Mint connection around.
- Add IPv6 support with
inet6: true
in the transport options. - Cache the
:cacertfile
option for faster certificate lookup and decoding. - Add TLS 1.3 to default versions.
- Concatenate values in one
cookie
header if thecookie
header is provided more than once in HTTP/2. - Fix headers merging in
Mint.UnsafeProxy
. - Remove some
Logger.debug/1
calls from the codebase. - Assume the HTTP/2 protocol on TCP connections if using
Mint.HTTP2
. - Fix a bug where we would send
WINDOW_UPDATE
frames with an increment of0
in HTTP/2. - Make the empty body chunk a no-op for
Mint.HTTP.stream_request_body/3
(only for HTTP/1). - Add the
Mint.HTTP.is_connection_message/2
guard. - Fix wildcard certificate verification in OTP 23.
- Remove the deprecated
Mint.HTTP.request/4
,Mint.HTTP1.request/4
, andMint.HTTP2.request/4
.
- Deprecate
Mint.HTTP.request/4
in favor of explicitly passing the body every time inMint.HTTP.request/5
. Same forMint.HTTP1
andMint.HTTP2
. - Don't include port in the
authority
header if it's the default port for the used protocol. - Add a default
content-length
header in HTTP/2 - Allow passing headers to proxies with the
:proxy_headers
option. - Fix a bug with HTTP/1 chunking.
- Fix a small bug with double "wrapping" of some
Mint.TransportError
s. - Prevent unnecessary buffer allocations in the connections (less memory waste!).
- Add support for chunked transfer-encoding in HTTP/1 requests when you don't use
content-encoding
/transfer-encoding
yourself. - Add support for trailing headers in HTTP/* requests through
stream_request_body/3
. - Add a page about decompressing responses in the guides.
- Remove
Mint.HTTP1.get_socket/1
,Mint.HTTP2.get_socket/1
, andMint.HTTP.get_socket/1
.
-
Downcase all headers in HTTP/2 to mimic the behavior in HTTP/1.1.
-
Add
Mint.HTTP.set_mode/2
,Mint.HTTP1.set_mode/2
, andMint.HTTP2.set_mode/2
to change the mode of a socket between active and passive. -
Add a
:mode
option to theconnect/4
functions to start the socket in active or passive mode. -
Add
Mint.HTTP.recv/3
,Mint.HTTP1.recv/3
, andMint.HTTP2.recv/3
to receive data from a passive socket in a blocking way. -
Add
Mint.HTTP.controlling_process/2
,Mint.HTTP1.controlling_process/2
, andMint.HTTP2.controlling_process/2
to change the controlling process of a connection. -
Support trailing response headers in HTTP/2 connections.
-
Fix a bug with requests exceeding the window size in HTTP/2. We were sending the headers of a request even if the body was larger than the window size. Now, if the body is larger than the window size, we error out right away.
-
Fix a bug in the HTTP/2 handshake that would crash the connection in case the server sent unforeseen frames.
-
Improve buffering of body chunks in HTTP/1.
- Add the
Mint.TransportError
andMint.HTTPError
exceptions. Change all the connection functions so that they return these error structs instead of generic terms. - Remove
Mint.HTTP2.get_setting/2
in favour ofMint.HTTP2.get_server_setting/2
andMint.HTTP2.get_client_setting/2
.
- Add support for HTTP/2 server push with the new
:push_promise
response. - Add
Mint.HTTP2.cancel_request/5
. - Add
Mint.HTTP2.get_window_size/2
. - Add
open_request_count/1
function toMint.HTTP
, andMint.HTTP1
,Mint.HTTP2
. - Add
open?/2
function toMint.HTTP
, andMint.HTTP1
,Mint.HTTP2
. - Make the
Mint.HTTP2.HPACK
module private. - Take into account the max header list size advertised by the server in HTTP/2 connections.
- Improve error handling in a bunch of
Mint.HTTP2
functions. - Fix flow control on
WINDOW_UPDATE
frames at the connection level inMint.HTTP2
. - Correctly return timeout errors when connecting.
- Treat HTTP/1 header keys as case-insensitive.
- Prohibit users from streaming on unknown requests in HTTP/2.
- Prohibit the server from violating the client's max concurrent streams setting in HTTP/2.
- Strip whitespace when parsing the
content-length
header in HTTP/1. - Fix path validation when building HTTP/1 requests, fixes paths with
%NN
escapes.