1# 0.4.4 (April 3, 2024) 2 3* Limit number of CONTINUATION frames for misbehaving connections. 4 5# 0.4.3 (March 15, 2024) 6 7* Fix flow control limits to not apply until receiving SETTINGS ack. 8* Fix not returning an error if IO ended without `close_notify`. 9* Improve performance of decoding many headers. 10 11# 0.4.2 (January 17th, 2024) 12 13* Limit error resets for misbehaving connections. 14* Fix selecting MAX_CONCURRENT_STREAMS value if no value is advertised initially. 15 16# 0.4.1 (January 8, 2024) 17 18* Fix assigning connection capacity which could starve streams in some instances. 19 20# 0.4.0 (November 15, 2023) 21 22* Update to `http` 1.0. 23* Remove deprecated `Server::poll_close()`. 24 25# 0.3.22 (November 15, 2023) 26 27* Add `header_table_size(usize)` option to client and server builders. 28* Improve throughput when vectored IO is not available. 29* Update indexmap to 2. 30 31# 0.3.21 (August 21, 2023) 32 33* Fix opening of new streams over peer's max concurrent limit. 34* Fix `RecvStream` to return data even if it has received a `CANCEL` stream error. 35* Update MSRV to 1.63. 36 37# 0.3.20 (June 26, 2023) 38 39* Fix panic if a server received a request with a `:status` pseudo header in the 1xx range. 40* Fix panic if a reset stream had pending push promises that were more than allowed. 41* Fix potential flow control overflow by subtraction, instead returning a connection error. 42 43# 0.3.19 (May 12, 2023) 44 45* Fix counting reset streams when triggered by a GOAWAY. 46* Send `too_many_resets` in opaque debug data of GOAWAY when too many resets received. 47 48# 0.3.18 (April 17, 2023) 49 50* Fix panic because of opposite check in `is_remote_local()`. 51 52# 0.3.17 (April 13, 2023) 53 54* Add `Error::is_library()` method to check if the originated inside `h2`. 55* Add `max_pending_accept_reset_streams(usize)` option to client and server 56 builders. 57* Fix theoretical memory growth when receiving too many HEADERS and then 58 RST_STREAM frames faster than an application can accept them off the queue. 59 (CVE-2023-26964) 60 61# 0.3.16 (February 27, 2023) 62 63* Set `Protocol` extension on requests when received Extended CONNECT requests. 64* Remove `B: Unpin + 'static` bound requiremented of bufs 65* Fix releasing of frames when stream is finished, reducing memory usage. 66* Fix panic when trying to send data and connection window is available, but stream window is not. 67* Fix spurious wakeups when stream capacity is not available. 68 69# 0.3.15 (October 21, 2022) 70 71* Remove `B: Buf` bound on `SendStream`'s parameter 72* add accessor for `StreamId` u32 73 74# 0.3.14 (August 16, 2022) 75 76* Add `Error::is_reset` function. 77* Bump MSRV to Rust 1.56. 78* Return `RST_STREAM(NO_ERROR)` when the server early responds. 79 80# 0.3.13 (March 31, 2022) 81 82* Update private internal `tokio-util` dependency. 83 84# 0.3.12 (March 9, 2022) 85 86* Avoid time operations that can panic (#599) 87* Bump MSRV to Rust 1.49 (#606) 88* Fix header decoding error when a header name is contained at a continuation 89 header boundary (#589) 90* Remove I/O type names from handshake `tracing` spans (#608) 91 92# 0.3.11 (January 26, 2022) 93 94* Make `SendStream::poll_capacity` never return `Ok(Some(0))` (#596) 95* Fix panic when receiving already reset push promise (#597) 96 97# 0.3.10 (January 6, 2022) 98 99* Add `Error::is_go_away()` and `Error::is_remote()` methods. 100* Fix panic if receiving malformed PUSH_PROMISE with stream ID of 0. 101 102# 0.3.9 (December 9, 2021) 103 104* Fix hang related to new `max_send_buffer_size`. 105 106# 0.3.8 (December 8, 2021) 107 108* Add "extended CONNECT support". Adds `h2::ext::Protocol`, which is used for request and response extensions to connect new protocols over an HTTP/2 stream. 109* Add `max_send_buffer_size` options to client and server builders, and a default of ~400MB. This acts like a high-water mark for the `poll_capacity()` method. 110* Fix panic if receiving malformed HEADERS with stream ID of 0. 111 112# 0.3.7 (October 22, 2021) 113 114* Fix panic if server sends a malformed frame on a stream client was about to open. 115* Fix server to treat `:status` in a request as a stream error instead of connection error. 116 117# 0.3.6 (September 30, 2021) 118 119* Fix regression of `h2::Error` that were created via `From<h2::Reason>` not returning their reason code in `Error::reason()`. 120 121# 0.3.5 (September 29, 2021) 122 123* Fix sending of very large headers. Previously when a single header was too big to fit in a single `HEADERS` frame, an error was returned. Now it is broken up and sent correctly. 124* Fix buffered data field to be a bigger integer size. 125* Refactor error format to include what initiated the error (remote, local, or user), if it was a stream or connection-level error, and any received debug data. 126 127# 0.3.4 (August 20, 2021) 128 129* Fix panic when encoding header size update over a certain size. 130* Fix `SendRequest` to wake up connection when dropped. 131* Fix potential hang if `RecvStream` is placed in the request or response `extensions`. 132* Stop calling `Instant::now` if zero reset streams are configured. 133 134# 0.3.3 (April 29, 2021) 135 136* Fix client being able to make `CONNECT` requests without a `:path`. 137* Expose `RecvStream::poll_data`. 138* Fix some docs. 139 140# 0.3.2 (March 24, 2021) 141 142* Fix incorrect handling of received 1xx responses on the client when the request body is still streaming. 143 144# 0.3.1 (February 26, 2021) 145 146* Add `Connection::max_concurrent_recv_streams()` getter. 147* Add `Connection::max_concurrent_send_streams()` getter. 148* Fix client to ignore receipt of 1xx headers frames. 149* Fix incorrect calculation of pseudo header lengths when determining if a received header is too big. 150* Reduce monomorphized code size of internal code. 151 152# 0.3.0 (December 23, 2020) 153 154* Update to Tokio v1 and Bytes v1. 155* Disable `tracing`'s `log` feature. (It can still be enabled by a user in their own `Cargo.toml`.) 156 157# 0.2.7 (October 22, 2020) 158 159* Fix stream ref count when sending a push promise 160* Fix receiving empty DATA frames in response to a HEAD request 161* Fix handling of client disabling SERVER_PUSH 162 163# 0.2.6 (July 13, 2020) 164 165* Integrate `tracing` directly where `log` was used. (For 0.2.x, `log`s are still emitted by default.) 166 167# 0.2.5 (May 6, 2020) 168 169* Fix rare debug assert failure in store shutdown. 170 171# 0.2.4 (March 30, 2020) 172 173* Fix when receiving `SETTINGS_HEADER_TABLE_SIZE` setting. 174 175# 0.2.3 (March 25, 2020) 176 177* Fix server being able to accept `CONNECT` requests without `:scheme` or `:path`. 178* Fix receiving a GOAWAY frame from updating the recv max ID, it should only update max send ID. 179 180# 0.2.2 (March 3, 2020) 181 182* Reduce size of `FlowControl` and `RecvStream`. 183 184# 0.2.1 (December 6, 2019) 185 186* Relax `Unpin` bounds on the send `Buf` generic. 187 188# 0.2.0 (December 3, 2019) 189 190* Add `server::Connection::set_initial_window_size` and `client::Connection::set_initial_window_size` which can adjust the `INITIAL_WINDOW_SIZE` setting on an existing connection (#421). 191* Update to `http` v0.2. 192* Update to `tokio` v0.2. 193* Change `unstable-stream` feature to `stream`. 194* Change `ReserveCapacity` to `FlowControl` (#423). 195* Remove `From<io::Error>` for `Error`. 196 197# 0.2.0-alpha.3 (October 1, 2019) 198 199* Update to futures `0.3.0-alpha.19`. 200* Update to tokio `0.2.0-alpha.6`. 201 202# 0.2.0-alpha.2 (September 20, 2019) 203 204* Add server support for `PUSH_PROMISE`s (#327). 205* Update to tokio `0.2.0-alpha.5`. 206* Change `stream` feature to `unstable-stream`. 207 208# 0.2.0-alpha.1 (August 30, 2019) 209 210* Update from `futures` 0.1 to `std::future::Future`. 211* Update `AsyncRead`/`AsyncWrite` to `tokio-io` 0.2 alpha. 212* Change `Stream` implementations to be optional, default disabled. Specific async and poll functions are now inherent, and `Stream` can be re-enabled with the `stream` cargo feature. 213 214# 0.1.25 (June 28, 2019) 215 216* Fix to send a `RST_STREAM` instead of `GOAWAY` if receiving a frame on a previously closed stream. 217* Fix receiving trailers without an end-stream flag to be a stream error instead of connection error. 218 219# 0.1.24 (June 17, 2019) 220 221* Fix server wrongly rejecting requests that don't have an `:authority` header (#372). 222 223# 0.1.23 (June 4, 2019) 224 225* Fix leaking of received DATA frames if the `RecvStream` is never polled (#368). 226 227# 0.1.22 (June 3, 2019) 228 229* Fix rare panic when remote sends `RST_STREAM` or `GOAWAY` for a stream pending window capacity (#364). 230 231# 0.1.21 (May 30, 2019) 232 233* Fix write loop when a header didn't fit in write buffer. 234 235# 0.1.20 (May 16, 2019) 236 237* Fix lifetime conflict for older compilers. 238 239# 0.1.19 (May 15, 2019) 240 241* Fix rare crash if `CONTINUATION` frame resumed in the middle of headers with the same name. 242* Fix HPACK encoder using an old evicted index for repeated header names. 243 244# 0.1.18 (April 9, 2019) 245 246* Fix `server::Connection::abrupt_shutdown` to no longer return the same error the user sent (#352). 247 248# 0.1.17 (March 12, 2019) 249 250* Add user PING support (#346). 251* Fix notifying a `RecvStream` task if locally sending a reset. 252* Fix connections "hanging" when all handles are dropped but some streams had been reset. 253 254# 0.1.16 (January 24, 2019) 255 256* Log header values when malformed (#342). 257 258# 0.1.15 (January 12, 2019) 259 260* Fix race condition bug related to shutting down the client (#338). 261 262# 0.1.14 (December 5, 2018) 263 264* Fix closed streams to always return window capacity to the connection (#334). 265* Fix locking when `Debug` printing an `OpaqueStreamRef` (#333). 266* Fix inverted split for DATA frame padding (#330). 267* Reduce `Debug` noise for `Frame` (#329). 268 269# 0.1.13 (October 16, 2018) 270 271* Add client support for Push Promises (#314). 272* Expose `io::Error` from `h2::Error` (#311) 273* Misc bug fixes (#304, #309, #319, #313, #320). 274 275# 0.1.12 (August 8, 2018) 276 277* Fix initial send window size (#301). 278* Fix panic when calling `reserve_capacity` after connection has been closed (#302). 279* Fix handling of incoming `SETTINGS_INITIAL_WINDOW_SIZE`. (#299) 280 281# 0.1.11 (July 31, 2018) 282 283* Add `stream_id` accessors to public API types (#292). 284* Fix potential panic when dropping clients (#295). 285* Fix busy loop when shutting down server (#296). 286 287# 0.1.10 (June 15, 2018) 288 289* Fix potential panic in `SendRequest::poll_ready()` (#281). 290* Fix infinite loop on reset connection during prefix (#285). 291 292# 0.1.9 (May 31, 2018) 293 294* Add `poll_reset` to `SendResponse` and `SendStream` (#279). 295 296# 0.1.8 (May 23, 2018) 297 298* Fix client bug when max streams is reached. (#277) 299 300# 0.1.7 (May 14, 2018) 301 302* Misc bug fixes (#266, #273, #261, #275). 303 304# 0.1.6 (April 24, 2018) 305 306* Misc bug fixes related to stream management (#258, #260, #262). 307 308# 0.1.5 (April 6, 2018) 309 310* Fix the `last_stream_id` sent during graceful GOAWAY (#254). 311 312# 0.1.4 (April 5, 2018) 313 314* Add `initial_connection_window_size` to client and server `Builder`s (#249). 315* Add `graceful_shutdown` and `abrupt_shutdown` to `server::Connection`, 316 deprecating `close_connection` (#250). 317 318# 0.1.3 (March 28, 2018) 319 320* Allow configuring max streams before the peer's settings frame is 321 received (#242). 322* Fix HPACK decoding bug with regards to large literals (#244). 323* Fix state transition bug triggered by receiving a RST_STREAM frame (#247). 324 325# 0.1.2 (March 13, 2018) 326 327* Fix another bug relating to resetting connections and reaching 328 max concurrency (#238). 329 330# 0.1.1 (March 8, 2018) 331 332* When streams are dropped, close the connection (#222). 333* Notify send tasks on connection error (#231). 334* Fix bug relating to resetting connections and reaching max concurrency (#235). 335* Normalize HTTP request path to satisfy HTTP/2.0 specification (#228). 336* Update internal dependencies. 337 338# 0.1.0 (Jan 12, 2018) 339 340* Initial release 341