- Add support for 1xx informational responses on client and server side.
- Fix auto-releasing of padding bytes of DATA frames for flow control windows.
- Fix to stop assigning capacity to pending streams which can't use it yet.
- Fix tracing to not grab the parent for the connection span.
- Fix default limits on max stored reset streams and duration to more reasonable values.
- Fix client to not return an error when a clean shutdown otherwise doesn't get a TLS close_notify, which some servers don't bother sending.
- Fix
is_end_stream()to return true only when ended cleanly, not when errored.
- Add
sever::Connection::has_streams()method to check for active streams.
- Fix handling implicit stream resets at the more correct time.
- Fix window size decrements of send-closed streams.
- Fix reclaiming of reserved capacity when streams are closed.
- Fix to no longer call
poll_flushafterpoll_shutdown. - Fix busy loop in task when poll_shutdown returns pending.
- Fix treating HEADERS frames with a non-zero content-length but END_STREAM flag as malformed.
- Fix notifying the stream task when automatically reset on receipt of a stream error.
- Add
current_max_send_streams()andcurrent_max_recv_streams()toclient::SendRequest. - Fix sending a PROTOCOL_ERROR instead of REFUSED_STREAM when receiving oversized headers.
- Fix notifying a PushPromise task properly.
- Fix notifying a stream task when reset.
- Fix race condition that sometimes hung connections during shutdown.
- Fix pseudo header construction for CONNECT and OPTIONS requests.
- Limit number of CONTINUATION frames for misbehaving connections.
- 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.
- Limit error resets for misbehaving connections.
- Fix selecting MAX_CONCURRENT_STREAMS value if no value is advertised initially.
- Fix assigning connection capacity which could starve streams in some instances.
- Update to
http1.0. - Remove deprecated
Server::poll_close().
- Add
header_table_size(usize)option to client and server builders. - Improve throughput when vectored IO is not available.
- Update indexmap to 2.
- Fix opening of new streams over peer's max concurrent limit.
- Fix
RecvStreamto return data even if it has received aCANCELstream error. - Update MSRV to 1.63.
- Fix panic if a server received a request with a
:statuspseudo 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.
- Fix counting reset streams when triggered by a GOAWAY.
- Send
too_many_resetsin opaque debug data of GOAWAY when too many resets received.
- Fix panic because of opposite check in
is_remote_local().
- Add
Error::is_library()method to check if the originated insideh2. - 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)
- Set
Protocolextension on requests when received Extended CONNECT requests. - Remove
B: Unpin + 'staticbound 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.
- Remove
B: Bufbound onSendStream's parameter - add accessor for
StreamIdu32
- Add
Error::is_resetfunction. - Bump MSRV to Rust 1.56.
- Return
RST_STREAM(NO_ERROR)when the server early responds.
- Update private internal
tokio-utildependency.
- 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
tracingspans (#608)
- Make
SendStream::poll_capacitynever returnOk(Some(0))(#596) - Fix panic when receiving already reset push promise (#597)
- Add
Error::is_go_away()andError::is_remote()methods. - Fix panic if receiving malformed PUSH_PROMISE with stream ID of 0.
- Fix hang related to new
max_send_buffer_size.
- 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_sizeoptions to client and server builders, and a default of ~400MB. This acts like a high-water mark for thepoll_capacity()method. - Fix panic if receiving malformed HEADERS with stream ID of 0.
- Fix panic if server sends a malformed frame on a stream client was about to open.
- Fix server to treat
:statusin a request as a stream error instead of connection error.
- Fix regression of
h2::Errorthat were created viaFrom<h2::Reason>not returning their reason code inError::reason().
- Fix sending of very large headers. Previously when a single header was too big to fit in a single
HEADERSframe, 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.
- Fix panic when encoding header size update over a certain size.
- Fix
SendRequestto wake up connection when dropped. - Fix potential hang if
RecvStreamis placed in the request or responseextensions. - Stop calling
Instant::nowif zero reset streams are configured.
- Fix client being able to make
CONNECTrequests without a:path. - Expose
RecvStream::poll_data. - Fix some docs.
- Fix incorrect handling of received 1xx responses on the client when the request body is still streaming.
- 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.
- Update to Tokio v1 and Bytes v1.
- Disable
tracing'slogfeature. (It can still be enabled by a user in their ownCargo.toml.)
- 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
- Integrate
tracingdirectly wherelogwas used. (For 0.2.x,logs are still emitted by default.)
- Fix rare debug assert failure in store shutdown.
- Fix when receiving
SETTINGS_HEADER_TABLE_SIZEsetting.
- Fix server being able to accept
CONNECTrequests without:schemeor:path. - Fix receiving a GOAWAY frame from updating the recv max ID, it should only update max send ID.
- Reduce size of
FlowControlandRecvStream.
- Relax
Unpinbounds on the sendBufgeneric.
- Add
server::Connection::set_initial_window_sizeandclient::Connection::set_initial_window_sizewhich can adjust theINITIAL_WINDOW_SIZEsetting on an existing connection (#421). - Update to
httpv0.2. - Update to
tokiov0.2. - Change
unstable-streamfeature tostream. - Change
ReserveCapacitytoFlowControl(#423). - Remove
From<io::Error>forError.
- Update to futures
0.3.0-alpha.19. - Update to tokio
0.2.0-alpha.6.
- Add server support for
PUSH_PROMISEs (#327). - Update to tokio
0.2.0-alpha.5. - Change
streamfeature tounstable-stream.
- Update from
futures0.1 tostd::future::Future. - Update
AsyncRead/AsyncWritetotokio-io0.2 alpha. - Change
Streamimplementations to be optional, default disabled. Specific async and poll functions are now inherent, andStreamcan be re-enabled with thestreamcargo feature.
- Fix to send a
RST_STREAMinstead ofGOAWAYif 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.
- Fix server wrongly rejecting requests that don't have an
:authorityheader (#372).
- Fix leaking of received DATA frames if the
RecvStreamis never polled (#368).
- Fix rare panic when remote sends
RST_STREAMorGOAWAYfor a stream pending window capacity (#364).
- Fix write loop when a header didn't fit in write buffer.
- Fix lifetime conflict for older compilers.
- Fix rare crash if
CONTINUATIONframe resumed in the middle of headers with the same name. - Fix HPACK encoder using an old evicted index for repeated header names.
- Fix
server::Connection::abrupt_shutdownto no longer return the same error the user sent (#352).
- Add user PING support (#346).
- Fix notifying a
RecvStreamtask if locally sending a reset. - Fix connections "hanging" when all handles are dropped but some streams had been reset.
- Log header values when malformed (#342).
- Fix race condition bug related to shutting down the client (#338).
- Fix closed streams to always return window capacity to the connection (#334).
- Fix locking when
Debugprinting anOpaqueStreamRef(#333). - Fix inverted split for DATA frame padding (#330).
- Reduce
Debugnoise forFrame(#329).
- Add client support for Push Promises (#314).
- Expose
io::Errorfromh2::Error(#311) - Misc bug fixes (#304, #309, #319, #313, #320).
- Fix initial send window size (#301).
- Fix panic when calling
reserve_capacityafter connection has been closed (#302). - Fix handling of incoming
SETTINGS_INITIAL_WINDOW_SIZE. (#299)
- Add
stream_idaccessors to public API types (#292). - Fix potential panic when dropping clients (#295).
- Fix busy loop when shutting down server (#296).
- Fix potential panic in
SendRequest::poll_ready()(#281). - Fix infinite loop on reset connection during prefix (#285).
- Add
poll_resettoSendResponseandSendStream(#279).
- Fix client bug when max streams is reached. (#277)
- Misc bug fixes (#266, #273, #261, #275).
- Misc bug fixes related to stream management (#258, #260, #262).
- Fix the
last_stream_idsent during graceful GOAWAY (#254).
- Add
initial_connection_window_sizeto client and serverBuilders (#249). - Add
graceful_shutdownandabrupt_shutdowntoserver::Connection, deprecatingclose_connection(#250).
- 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).
- Fix another bug relating to resetting connections and reaching max concurrency (#238).
- 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.
- Initial release