🥧 Savoury implementation of the QUIC transport protocol and HTTP/3
Breaking Changes:
SocketAddr
parameter, including accept()
, connect()
, RecvInfo
, SendInfo
.Highlights:
PRIORITY_UPDATE
frame (see h3::Connection::send_priority_update_for_request()`).Full changelog at https://github.com/cloudflare/quiche/compare/0.14.0...0.15.0
Breaking Changes:
Connection
structure doesn't need to be pinned anymore, so the accept()
and connect()
functions now return a plain Connection
rather than wrap it in Box<Pin<...>>
.Highlights:
Connection
references being aliased when executing BoringSSL callbacks.Full changelog at https://github.com/cloudflare/quiche/compare/0.13.0...0.14.0
Breaking Changes:
boring-sys
build feature has been renamed to boringssl-boring-crate
.h3::Connection::send_response_with_priority()
method now takes a Priority
value rather than a &str
to represent the priority to be used.PriorityUpdate
value has been added to the h3::Event
enum returned by h3::Connection::poll()
.Highlights:
PRIORITY_UPDATE
HTTP/3 frame: a new PriorityUpdate
value has been added to the h3::Event
enum that is returned by h3::Connection::poll()
to notify the application when a priority update has been received, and the new h3::Connection::take_last_priority_update()
method has been added to let applications retrieve the priority value for a specific prioritized element.Full changelog at https://github.com/cloudflare/quiche/compare/0.12.0...0.13.0
Breaking Changes:
Connection::session()
and Connection::peer_cert()
methods now return a &[u8]
slice instead of a Vec<u8>
.Highlights:
quiche_conn_session()
function has been restored in the FFI API.Full changelog at https://github.com/cloudflare/quiche/compare/0.11.0...0.12.0
Breaking Changes:
quiche_conn_session()
function has been temporarily removed from the FFI API due to a bug that would cause applications to access already-freed memory. The functionality will be re-implemented in a future release.Highlights:
Config::set_max_connection_window()
and Config::set_max_stream_window()
APIs.Full changelog at https://github.com/cloudflare/quiche/compare/0.10.0...0.11.0
Breaking Changes:
StreamReset
value has been added to the Error
enum. This can be returned by Connecttion::stream_recv()
to notify the application when the peer has reset a particular stream.Reset
value has been added to the h3::Event
enum. This is returned by h3::Connection::poll()
to notify the application when the peer has reset a particular stream.h3::Config::set_max_header_list_size()
method was renamed to h3::Config::set_max_field_section_size()
to align to the renaming of the corresponding HTTP/3 setting in the spec.Highlights:
Vec<u8>
to avoid copying data (see Connection::dgram_send_vec()
and Connection::dgram_recv_vec()
).Connection::server_name()
), expose the locally-generated connection error (Connection::local_error()
), expose whether the connection timed-out (Connection::is_timed_out()
).Full changelog at https://github.com/cloudflare/quiche/compare/0.9.0...0.10.0
Breaking Changes:
accept()
and connect()
functions now take a std::net::SocketAddr
parameter representing the address of the peer on the other side of the connection.Connection::recv()
method takes a RecvInfo
parameter which should be populated with the address the UDP datagram was received from. Note that additional fields may be added in the future to support new features.Connection::send()
method returns an additional SendInfo
value which carries additional metadata for the newly generated QUIC packet, for example the address it needs to be sent to. Note that additional fields may be added in the future to support new features.InvalidStreamState
error value has been updated to include the stream ID that caused the error.h3::Header
and h3::HeaderRef
types now use byte vectors (Vec<u8>
) rather than strings to represent header names and values. Their constructors have been updated accordingly to take byte slices (&[u8]
) rather than string slices (&str
). The FFI API is unaffected.Highlights:
at
field of the SendInfo
structure for more details.Full changelog at https://github.com/cloudflare/quiche/compare/0.8.1...0.9.0
Highlights:
ConnectionError
structure's fields are now properly accessible by applications.Finished
event is not triggered multiple times even if a msbehaving application repeatedly calls the recv_body()
method after Error::Done
is returned.Full changelog at https://github.com/cloudflare/quiche/compare/0.8.0...0.8.1
Breaking Changes:
Data
and Datagram
events are now edge-triggered like the other HTTP/3 events. This means that they will only be reported by the poll()
method once. Applications will need to consume all the data buffered for those events' triggers to be re-armed.Highlights:
STOP_SENDING
and RESET_STREAM
frames are now sent whenever a stream is shut down.Connection
helper methods: max_send_udp_payload_size()
, peer_error()
, source_id()
, destination_id()
.Full changelog at https://github.com/cloudflare/quiche/compare/0.7.0...0.8.0
Breaking Changes:
Config::set_max_udp_payload_size()
method was renamed to Config::set_max_recv_udp_payload_size()
.ConnectionId
type: accept()
, connect()
, negotiate_version()
, retry()
, Header
.ffi
feature (cargo build --features ffi ...
).Connection::recv()
method will return Error::BufferTooShort
if an empty buffer is supplied.Highlights:
Config::set_max_send_udp_payload_size()
method to configure maximumg UDP datagram outgoing size.Connection
helper methods: is_readable()
, is_draining()
, peer_streams_left_bidi()
, peer_streams_left_uni()
.Config
and Connection
implement Send
+ Sync
.ConnectionId
type to represent QUIC connection IDs.Full changelog at https://github.com/cloudflare/quiche/compare/0.6.0...0.7.0