Library
Module
Module type
Parameter
Class
Class type
h2: Fix tests on 32-bit platforms
(#152)h2-mirage: adapt to Conduit v4 and remove
H2_mirage.Server_with_conduit
(#154)h2: fix memory leaks related to trailer headers in the server and client
implementations (#159
(thanks @quernd!),
#160)h2: allow configuring
flush_headers_immediately
on the client and default
tofalse
. This means that h2 will wait for the first request body bytes to
be scheduled and batchHEADERS
andDATA
frames when sending requests
(#163,
#164)h2: Split
Body.t
intoBody.Writer.t
andBody.Reader.t
(#165)h2: OCaml 5.00 compatibility -- add
seeded_hash
toscheduler.ml
(#168)h2: Use a tail-recursive version of
Angstrom.skip_many
. Fixes a memory leak
in long-running connections e.g. gRPC
(#172)h2-async: Add an OCaml-TLS client to
h2-async
(#174)h2: Fix a bug that caused different requests to share the same headers buffer
under concurrency (#182)
0.8.0 2021-04-11
h2: scheduler: fix bug that caused zero length DATA frames not to be sent if
there were no flow-control credits
(#142) -- reported by
@blandinwh2,h2-lwt,h2-lwt-unix,h2-async,h2-mirage Add
trailers_handler
toConnection.request
(#146)h2: client / server: fix a security issue that allowed a malicious peer to
make h2 allocate as much as it wanted
(#149)
0.7.0 2020-08-09
h2: client / server: execute request/response body reads as data frames
arrive (#130)h2: client / server: only give back flow control tokens after surfacing reads
to the application (#131)h2: Set a default of 128MiB for the initial receiving window size
(#132)h2: don't attempt to write frames to an encoder that has closed
(#134)h2: Handle frame size errors in a more robust manner when parsing
(#133)h2: Create push streams with the right priority (as per
RFC7540§5.3.5, pushed
streams initially depend on their associated stream)
(#136)
0.6.1 2020-05-16
0.6.0 2020-04-29
h2-lwt: Close the communication channel after shutting down the client
(#108)h2-lwt-unix: fix premature SSL termination in the SSL / TLS runtimes
(#109)h2-lwt-unix: TLS runtime: adapt to TLS v0.11.0
(#109)h2-lwt-unix: feed EOF to the state machine if the socket has been closed --
this is especially important on the client because it allows connections to
terminate cleanly. (#112)h2: Refactor the
Settings
module API
(#113)h2-lwt, h2-lwt-unix: Use gluten to
implement the Lwt-based runtimes
(#114)h2: set a lower bound on Angstrom 0.14.0
(#118)h2: in the client implementation, don't report an error if the server has
sent anRST_STREAM
frame after sending a complete response
(#119).h2-lwt-unix: fix a regression that prevented the SSL / TLS runtimes to
negotiate an HTTP/2 connection over the ALPN extension of TLS, in their
default implementations
(#122)
0.5.0 2019-12-19
h2, h2-lwt, h2-lwt-unix, h2-mirage: Remove support for versions of OCaml
lower than 4.06 (#74)h2: Expose more information in client error handlers when initiating a
connection (#80)h2: Make H2.Status.t a strict superset of Httpaf.Status.t
(#83)h2-lwt, h2-lwt-unix: split HTTPS functions in 2: one that sets up a default
secure connection and performs the TLS handshake / accept, and one that is
more "raw", i.e. leaves that responsibility to the caller. Also exposes thesocket
type to make it easier to abstract over HTTP / HTTPS
(#84)h2-lwt, h2-lwt-unix, h2-mirage: Improve the
H2_lwt.IO
interface, don't
require areport_exn
function, only astate
function that returns the
socket state (#85)h2, h2-lwt, h2-lwt-unix, h2-mirage: Add support for starting HTTP/2 for
"http" URIs. Covers section 3.2
of the HTTP/2 specification
(#87)h2: Fix misinterpretation of the spec where h2 would consider a request /
response malformed if it had a non-zerocontent-length
header and no DATA
frames (#89)h2: Add
Request.body_length
andResponse.body_length
(#90)h2: Fix a bug that caused DATA frames to be incorrectly chunked when
returning a streaming response
(#91)h2: Drain pending bytes after getting a
Close
report from the runtime
(#92)h2: Report connection errors for unknown frames that exceed the maximum
payload size -- they may not be speaking HTTP/2
(#93)
0.4.0 2019-11-05
h2-mirage: depend on
mirage-conduit
instead ofconduit-mirage
,
effectively placing a lower bound of OCaml 4.07 on the next release of
h2-mirage (#67)h2-lwt-unix: replace the
dune
file (previously written in OCaml) with a(select)
form to avoid depending onocamlfind
(#68)h2-lwt, h2-lwt-unix, h2-mirage: Refactor interface code through common
H2_lwt_intf
and expose less (internal) types
(#65)h2-lwt, h2-lwt-unix, h2-mirage: Expose
Client.is_closed
(#65)h2: Don't count peer max concurrent streams based on what the endpoint
receives; the endpoint is responsible for selecting it
(#71)h2: Fix bug in
Headers.remove
that prevented removing the last header pair
(#73)h2: Fix bug in
Headers.replace
that prevented replacing the last header
pair (#76)h2-mirage: Adapt to Mirage 3.7 interfaces.
h2_mirage
now requiresconduit-mirage
>= 2.0.2 andmirage-flow
>= 2.0.0
(#77)
0.3.0 2019-05-04
h2-mirage: Provide
Server
andClient
functors that take aMirage_flow_lwt.S
module as an argument
(#37)h2: Fix bug in the client implementation that didn't report connection
preface errors as soon as they happened
(#38)h2: optimize the stream scheduler: previously when the writer yielded between
writes, a wake up function was registered with all the (active) streams,
which required a linear traversal of all the streams. The optimization is to
allow every stream to wake up a global writer to which they hold a reference
(#40)h2: improve handling of received frames against closed streams
(#40)h2: in the client implementation, call the stream level error handler when
receiving anRST_STREAM
frame
(#42)h2-lwt-unix: fail earlier when setting up a SSL/TLS server without the
depopts being available
(#46)h2-lwt-unix: improve the default ALPN negotiation mechanism in the SSL
binding (#46)
0.2.0 2019-04-06
h2: Fix false negative related to receiving trailer headers with CONTINUATION
frames (#11)hpack: Fix bug where trying to add an entry to an HPACK dynamic table with 0
capacity resulted in an out-of-bounds array access
(#13,
#35)h2: Add support for the 421 (Misdirected Request) status code as per
RFC7540§9.1.2
(#15)h2, h2-lwt, h2-lwt-unix, h2-mirage: Add an HTTP/2 client implementation
(#16)h2: Remove dependency on the
result
package
(#18)h2: Track SETTINGS frames that haven't been acknowledged by the peer
(#22)h2: Respect the initial MAX_FRAME_SIZE setting when allocating the
underlying buffer for the frame writer
(#34)
0.1.0 2019-03-27
Initial public release