CHANGELOG.md (6171B)
1 # Changelog 2 3 ## v1.4.2 4 5 ### Bug fixes and improvements 6 7 * Properly handle interim responses (informational `1xx` status codes) in 8 HTTP/2. Now you might get zero or more sequences of `:status` and `:headers` 9 responses with status `1xx` before the *final response* (with status 10 non-`1xx`). 11 12 ## v1.4.1 13 14 ### Bug fixes and improvements 15 16 * Emit the remaining buffer as a `:data` response when switching protocols 17 from HTTP/1. 18 * Respect closed-for-writing when streaming data frames in HTTP/2. 19 * Fix handling of HTTP/2 frames of an unknown type. 20 21 ## v1.4.0 22 23 ### Bug fixes and improvements 24 25 * Add support for `SETTINGS_ENABLE_CONNECT_PROTOCOL` HTTP/2 server setting. 26 * Omit the `:scheme` and `:path` pseudo headers for HTTP/2 CONNECT. 27 * Fix invalid connection state when data can't be sent. 28 * Skip expired certs in partial chain hook. 29 * Add `Mint.HTTP.get_proxy_headers/1`. 30 * Add `Mint.HTTP.module/1`. 31 32 ## v1.3.0 33 34 ### Bug fixes and improvements 35 36 * Improve compatibility with OTP 24. 37 * Support HTTP/1 pipelining when streaming requests. 38 * Add `Mint.HTTP.get_socket/1` for returning the connection socket. 39 * Improve compatibility with TLS 1.3. 40 41 ## v1.2.1 42 43 ### Bug fixes and improvements 44 45 * Fix a bug where we were not ignoring the return value of `:ssl.close/1` and `:gen_tcp.close/1`. 46 * Fix a bug where we were not properly handling transport errors when doing ALPN protocol negotiation. 47 * Fix a bug where we were not handling connection closed errors in a few places. 48 49 ## v1.2.0 50 51 ### Bug fixes and improvements 52 53 * Fix a few bugs with passing the Mint connection around. 54 * Add IPv6 support with `inet6: true` in the transport options. 55 * Cache the `:cacertfile` option for faster certificate lookup and decoding. 56 * Add TLS 1.3 to default versions. 57 58 ## v1.1.0 59 60 ### Bug fixes and improvements 61 62 * Concatenate values in one `cookie` header if the `cookie` header is provided more than once in HTTP/2. 63 * Fix headers merging in `Mint.UnsafeProxy`. 64 * Remove some `Logger.debug/1` calls from the codebase. 65 * Assume the HTTP/2 protocol on TCP connections if using `Mint.HTTP2`. 66 * Fix a bug where we would send `WINDOW_UPDATE` frames with an increment of `0` in HTTP/2. 67 * Make the empty body chunk a no-op for `Mint.HTTP.stream_request_body/3` (only for HTTP/1). 68 * Add the `Mint.HTTP.is_connection_message/2` guard. 69 * Fix wildcard certificate verification in OTP 23. 70 71 ## v1.0.0 72 73 ### Breaking changes 74 75 * Remove the deprecated `Mint.HTTP.request/4`, `Mint.HTTP1.request/4`, and `Mint.HTTP2.request/4`. 76 77 ## v0.5.0 78 79 ### Bug fixes and improvements 80 81 * Deprecate `Mint.HTTP.request/4` in favor of explicitly passing the body every time in `Mint.HTTP.request/5`. Same for `Mint.HTTP1` and `Mint.HTTP2`. 82 * Don't include port in the `authority` header if it's the default port for the used protocol. 83 * Add a default `content-length` header in HTTP/2 84 * Allow passing headers to proxies with the `:proxy_headers` option. 85 * Fix a bug with HTTP/1 chunking. 86 87 ## v0.4.0 88 89 ### Bug fixes and improvements 90 91 * Fix a small bug with double "wrapping" of some `Mint.TransportError`s. 92 * Prevent unnecessary buffer allocations in the connections (less memory waste!). 93 * Add support for chunked transfer-encoding in HTTP/1 requests when you don't use `content-encoding`/`transfer-encoding` yourself. 94 * Add support for trailing headers in HTTP/* requests through `stream_request_body/3`. 95 * Add a page about decompressing responses in the guides. 96 97 ## v0.3.0 98 99 ### Breaking changes 100 101 * Remove `Mint.HTTP1.get_socket/1`, `Mint.HTTP2.get_socket/1`, and `Mint.HTTP.get_socket/1`. 102 103 ### Bug fixes and improvements 104 105 * Downcase all headers in HTTP/2 to mimic the behavior in HTTP/1.1. 106 107 * Add `Mint.HTTP.set_mode/2`, `Mint.HTTP1.set_mode/2`, and `Mint.HTTP2.set_mode/2` to change the mode of a socket between active and passive. 108 109 * Add a `:mode` option to the `connect/4` functions to start the socket in active or passive mode. 110 111 * Add `Mint.HTTP.recv/3`, `Mint.HTTP1.recv/3`, and `Mint.HTTP2.recv/3` to receive data from a passive socket in a blocking way. 112 113 * Add `Mint.HTTP.controlling_process/2`, `Mint.HTTP1.controlling_process/2`, and `Mint.HTTP2.controlling_process/2` to change the controlling process of a connection. 114 115 * Support trailing response headers in HTTP/2 connections. 116 117 ## v0.2.1 118 119 ### Bug fixes and improvements 120 121 * 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. 122 123 * Fix a bug in the HTTP/2 handshake that would crash the connection in case the server sent unforeseen frames. 124 125 * Improve buffering of body chunks in HTTP/1. 126 127 ## v0.2.0 128 129 ### Breaking changes 130 131 * Add the `Mint.TransportError` and `Mint.HTTPError` exceptions. Change all the connection functions so that they return these error structs instead of generic terms. 132 * Remove `Mint.HTTP2.get_setting/2` in favour of `Mint.HTTP2.get_server_setting/2` and `Mint.HTTP2.get_client_setting/2`. 133 134 ### Bug fixes and enhancements 135 136 * Add support for HTTP/2 server push with the new `:push_promise` response. 137 * Add `Mint.HTTP2.cancel_request/5`. 138 * Add `Mint.HTTP2.get_window_size/2`. 139 * Add `open_request_count/1` function to `Mint.HTTP`, and `Mint.HTTP1`, `Mint.HTTP2`. 140 * Add `open?/2` function to `Mint.HTTP`, and `Mint.HTTP1`, `Mint.HTTP2`. 141 * Make the `Mint.HTTP2.HPACK` module private. 142 * Take into account the max header list size advertised by the server in HTTP/2 connections. 143 * Improve error handling in a bunch of `Mint.HTTP2` functions. 144 * Fix flow control on `WINDOW_UPDATE` frames at the connection level in `Mint.HTTP2`. 145 * Correctly return timeout errors when connecting. 146 * Treat HTTP/1 header keys as case-insensitive. 147 * Prohibit users from streaming on unknown requests in HTTP/2. 148 * Prohibit the server from violating the client's max concurrent streams setting in HTTP/2. 149 * Strip whitespace when parsing the `content-length` header in HTTP/1. 150 * Fix path validation when building HTTP/1 requests, fixes paths with `%NN` escapes.