Skip to content

Latest commit

 

History

History
345 lines (214 loc) · 11.3 KB

CHANGELOG.md

File metadata and controls

345 lines (214 loc) · 11.3 KB

0.4.5 (May 17, 2024)

  • Fix race condition that sometimes hung connections during shutdown.
  • Fix pseudo header construction for CONNECT and OPTIONS requests.

0.4.4 (April 3, 2024)

  • Limit number of CONTINUATION frames for misbehaving connections.

0.4.3 (March 15, 2024)

  • Fix flow control limits to not apply until receiving SETTINGS ack.
  • Fix not returning an error if IO ended without close_notify.
  • Improve performance of decoding many headers.

0.4.2 (January 17th, 2024)

  • Limit error resets for misbehaving connections.
  • Fix selecting MAX_CONCURRENT_STREAMS value if no value is advertised initially.

0.4.1 (January 8, 2024)

  • Fix assigning connection capacity which could starve streams in some instances.

0.4.0 (November 15, 2023)

  • Update to http 1.0.
  • Remove deprecated Server::poll_close().

0.3.22 (November 15, 2023)

  • Add header_table_size(usize) option to client and server builders.
  • Improve throughput when vectored IO is not available.
  • Update indexmap to 2.

0.3.21 (August 21, 2023)

  • Fix opening of new streams over peer's max concurrent limit.
  • Fix RecvStream to return data even if it has received a CANCEL stream error.
  • Update MSRV to 1.63.

0.3.20 (June 26, 2023)

  • Fix panic if a server received a request with a :status pseudo header in the 1xx range.
  • Fix panic if a reset stream had pending push promises that were more than allowed.
  • Fix potential flow control overflow by subtraction, instead returning a connection error.

0.3.19 (May 12, 2023)

  • Fix counting reset streams when triggered by a GOAWAY.
  • Send too_many_resets in opaque debug data of GOAWAY when too many resets received.

0.3.18 (April 17, 2023)

  • Fix panic because of opposite check in is_remote_local().

0.3.17 (April 13, 2023)

  • Add Error::is_library() method to check if the originated inside h2.
  • Add max_pending_accept_reset_streams(usize) option to client and server builders.
  • Fix theoretical memory growth when receiving too many HEADERS and then RST_STREAM frames faster than an application can accept them off the queue. (CVE-2023-26964)

0.3.16 (February 27, 2023)

  • Set Protocol extension on requests when received Extended CONNECT requests.
  • Remove B: Unpin + 'static bound requiremented of bufs
  • Fix releasing of frames when stream is finished, reducing memory usage.
  • Fix panic when trying to send data and connection window is available, but stream window is not.
  • Fix spurious wakeups when stream capacity is not available.

0.3.15 (October 21, 2022)

  • Remove B: Buf bound on SendStream's parameter
  • add accessor for StreamId u32

0.3.14 (August 16, 2022)

  • Add Error::is_reset function.
  • Bump MSRV to Rust 1.56.
  • Return RST_STREAM(NO_ERROR) when the server early responds.

0.3.13 (March 31, 2022)

  • Update private internal tokio-util dependency.

0.3.12 (March 9, 2022)

  • Avoid time operations that can panic (#599)
  • Bump MSRV to Rust 1.49 (#606)
  • Fix header decoding error when a header name is contained at a continuation header boundary (#589)
  • Remove I/O type names from handshake tracing spans (#608)

0.3.11 (January 26, 2022)

  • Make SendStream::poll_capacity never return Ok(Some(0)) (#596)
  • Fix panic when receiving already reset push promise (#597)

0.3.10 (January 6, 2022)

  • Add Error::is_go_away() and Error::is_remote() methods.
  • Fix panic if receiving malformed PUSH_PROMISE with stream ID of 0.

0.3.9 (December 9, 2021)

  • Fix hang related to new max_send_buffer_size.

0.3.8 (December 8, 2021)

  • 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.
  • 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.
  • Fix panic if receiving malformed HEADERS with stream ID of 0.

0.3.7 (October 22, 2021)

  • Fix panic if server sends a malformed frame on a stream client was about to open.
  • Fix server to treat :status in a request as a stream error instead of connection error.

0.3.6 (September 30, 2021)

  • Fix regression of h2::Error that were created via From<h2::Reason> not returning their reason code in Error::reason().

0.3.5 (September 29, 2021)

  • 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.
  • Fix buffered data field to be a bigger integer size.
  • 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.

0.3.4 (August 20, 2021)

  • Fix panic when encoding header size update over a certain size.
  • Fix SendRequest to wake up connection when dropped.
  • Fix potential hang if RecvStream is placed in the request or response extensions.
  • Stop calling Instant::now if zero reset streams are configured.

0.3.3 (April 29, 2021)

  • Fix client being able to make CONNECT requests without a :path.
  • Expose RecvStream::poll_data.
  • Fix some docs.

0.3.2 (March 24, 2021)

  • Fix incorrect handling of received 1xx responses on the client when the request body is still streaming.

0.3.1 (February 26, 2021)

  • Add Connection::max_concurrent_recv_streams() getter.
  • Add Connection::max_concurrent_send_streams() getter.
  • Fix client to ignore receipt of 1xx headers frames.
  • Fix incorrect calculation of pseudo header lengths when determining if a received header is too big.
  • Reduce monomorphized code size of internal code.

0.3.0 (December 23, 2020)

  • Update to Tokio v1 and Bytes v1.
  • Disable tracing's log feature. (It can still be enabled by a user in their own Cargo.toml.)

0.2.7 (October 22, 2020)

  • Fix stream ref count when sending a push promise
  • Fix receiving empty DATA frames in response to a HEAD request
  • Fix handling of client disabling SERVER_PUSH

0.2.6 (July 13, 2020)

  • Integrate tracing directly where log was used. (For 0.2.x, logs are still emitted by default.)

0.2.5 (May 6, 2020)

  • Fix rare debug assert failure in store shutdown.

0.2.4 (March 30, 2020)

  • Fix when receiving SETTINGS_HEADER_TABLE_SIZE setting.

0.2.3 (March 25, 2020)

  • Fix server being able to accept CONNECT requests without :scheme or :path.
  • Fix receiving a GOAWAY frame from updating the recv max ID, it should only update max send ID.

0.2.2 (March 3, 2020)

  • Reduce size of FlowControl and RecvStream.

0.2.1 (December 6, 2019)

  • Relax Unpin bounds on the send Buf generic.

0.2.0 (December 3, 2019)

  • 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).
  • Update to http v0.2.
  • Update to tokio v0.2.
  • Change unstable-stream feature to stream.
  • Change ReserveCapacity to FlowControl (#423).
  • Remove From<io::Error> for Error.

0.2.0-alpha.3 (October 1, 2019)

  • Update to futures 0.3.0-alpha.19.
  • Update to tokio 0.2.0-alpha.6.

0.2.0-alpha.2 (September 20, 2019)

  • Add server support for PUSH_PROMISEs (#327).
  • Update to tokio 0.2.0-alpha.5.
  • Change stream feature to unstable-stream.

0.2.0-alpha.1 (August 30, 2019)

  • Update from futures 0.1 to std::future::Future.
  • Update AsyncRead/AsyncWrite to tokio-io 0.2 alpha.
  • 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.

0.1.25 (June 28, 2019)

  • Fix to send a RST_STREAM instead of GOAWAY if receiving a frame on a previously closed stream.
  • Fix receiving trailers without an end-stream flag to be a stream error instead of connection error.

0.1.24 (June 17, 2019)

  • Fix server wrongly rejecting requests that don't have an :authority header (#372).

0.1.23 (June 4, 2019)

  • Fix leaking of received DATA frames if the RecvStream is never polled (#368).

0.1.22 (June 3, 2019)

  • Fix rare panic when remote sends RST_STREAM or GOAWAY for a stream pending window capacity (#364).

0.1.21 (May 30, 2019)

  • Fix write loop when a header didn't fit in write buffer.

0.1.20 (May 16, 2019)

  • Fix lifetime conflict for older compilers.

0.1.19 (May 15, 2019)

  • Fix rare crash if CONTINUATION frame resumed in the middle of headers with the same name.
  • Fix HPACK encoder using an old evicted index for repeated header names.

0.1.18 (April 9, 2019)

  • Fix server::Connection::abrupt_shutdown to no longer return the same error the user sent (#352).

0.1.17 (March 12, 2019)

  • Add user PING support (#346).
  • Fix notifying a RecvStream task if locally sending a reset.
  • Fix connections "hanging" when all handles are dropped but some streams had been reset.

0.1.16 (January 24, 2019)

  • Log header values when malformed (#342).

0.1.15 (January 12, 2019)

  • Fix race condition bug related to shutting down the client (#338).

0.1.14 (December 5, 2018)

  • Fix closed streams to always return window capacity to the connection (#334).
  • Fix locking when Debug printing an OpaqueStreamRef (#333).
  • Fix inverted split for DATA frame padding (#330).
  • Reduce Debug noise for Frame (#329).

0.1.13 (October 16, 2018)

  • Add client support for Push Promises (#314).
  • Expose io::Error from h2::Error (#311)
  • Misc bug fixes (#304, #309, #319, #313, #320).

0.1.12 (August 8, 2018)

  • Fix initial send window size (#301).
  • Fix panic when calling reserve_capacity after connection has been closed (#302).
  • Fix handling of incoming SETTINGS_INITIAL_WINDOW_SIZE. (#299)

0.1.11 (July 31, 2018)

  • Add stream_id accessors to public API types (#292).
  • Fix potential panic when dropping clients (#295).
  • Fix busy loop when shutting down server (#296).

0.1.10 (June 15, 2018)

  • Fix potential panic in SendRequest::poll_ready() (#281).
  • Fix infinite loop on reset connection during prefix (#285).

0.1.9 (May 31, 2018)

  • Add poll_reset to SendResponse and SendStream (#279).

0.1.8 (May 23, 2018)

  • Fix client bug when max streams is reached. (#277)

0.1.7 (May 14, 2018)

  • Misc bug fixes (#266, #273, #261, #275).

0.1.6 (April 24, 2018)

  • Misc bug fixes related to stream management (#258, #260, #262).

0.1.5 (April 6, 2018)

  • Fix the last_stream_id sent during graceful GOAWAY (#254).

0.1.4 (April 5, 2018)

  • Add initial_connection_window_size to client and server Builders (#249).
  • Add graceful_shutdown and abrupt_shutdown to server::Connection, deprecating close_connection (#250).

0.1.3 (March 28, 2018)

  • Allow configuring max streams before the peer's settings frame is received (#242).
  • Fix HPACK decoding bug with regards to large literals (#244).
  • Fix state transition bug triggered by receiving a RST_STREAM frame (#247).

0.1.2 (March 13, 2018)

  • Fix another bug relating to resetting connections and reaching max concurrency (#238).

0.1.1 (March 8, 2018)

  • When streams are dropped, close the connection (#222).
  • Notify send tasks on connection error (#231).
  • Fix bug relating to resetting connections and reaching max concurrency (#235).
  • Normalize HTTP request path to satisfy HTTP/2.0 specification (#228).
  • Update internal dependencies.

0.1.0 (Jan 12, 2018)

  • Initial release