- Allow for version
~> 1.0
of thehpax
dependency.
- Default to using Erlang certificate store (see
public_key:cacerts_get/0
and friends) if available, instead of CAStore. - Don't send
RST_STREAM
frames in HTTP/2 if they are not needed (this is a network optimization, not visible to users of Mint).
- Add
:case_sensitive_headers
option toMint.HTTP1.connect/4
. - Add
:inet4
option toMint.HTTP.connect/4
.
- Require Elixir 1.11+.
- Add
match_fun
clause to deal with IP addresses in TLS handshake. - Optimize creation of HTTP/2 requests.
- Fix a compilation warning (unused
set_flag/2
function). - Improve performance of downcasing headers.
- Deprecate
:read_write
option inMint.HTTP.open?/2
. - Improve performance of checking for the CAStore library.
- Fix a memory leak with
Mint.HTTP1
connections which would stay open but report as closed on timeouts.
- Fix a
FunctionClauseError
that would happen when callingMint.HTTP2.close/1
on an HTTP/2 connection that hadn't completed the handshake yet. This bug was introduced in v1.5.0. See issue #392.
- Properly close sockets on erroneous connections.
- Fix
Mint.HTTP.is_connection_message/2
to support proxy connections. - Add support for CAStore v1.0.0+.
- Support all HTTP/2 settings for clients as well (see
Mint.HTTP2.put_settings/2
). - Handle the first
SETTINGS
frame sent by the server asynchronously in HTTP/2. This means lower latency between connecting to a server and being able to send data to it. - Add more logging and make logging configurable through the
:log
option (seeMint.HTTP.connect/4
,Mint.HTTP1.connect/4
,Mint.HTTP2.connect/4
).
- 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 trailer 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 trailer 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.