Conduit_async.V3 which provides convenience functions for resolving URIs to addresses (#287 @vbmithr)Lwt_ssl: Enable certification validation (#291 @vouillon)Async_ssl: fix exception raised when other side disconnects due to sharing underlying fd (#295 @bogdan2412)## v1.4.0
conduit odoc (#284 by @avsm)ppx_sexp_conv as not just a build dependency.mirage-types instead of just the generic package.Async_ssl options at config (#263, @vbmithr)Conduit_lwt_unix_ssl.Client.connect (#255 by @vouillon)EADDRINUSE for the Lwt backend (#257 by @rixed)Lwt_unix_ssl module.Async.Std).CONDUIT_TLS manually when using tls (#234, @hcarty)tls.mirage dependency was missing in the mirage-conduit-3.0.0 release (#232 by @samoht)Details on changes: https://discuss.ocaml.org/t/ann-major-releases-of-cohttp-conduit-dns-tcpip/571
Port build to jbuilder, and break up OPAM packages into multiple independent packages instead of being optional dependencies against the main conduit package. This makes it significantly easier to depend on precisely the libraries you need, but requires porting applications to use the new ocamlfind and opam scheme.
The new package layout is:
conduit: the main Conduit moduleconduit-lwt: the portable Lwt implementationconduit-lwt-unix: the Lwt/Unix implementationconduit-async the Jane Street Async implementationmirage-conduit: the MirageOS compatible implementationIn each of these packages, the opam and ocamlfind package names are now the same, so you will need to rename the former subpackages such as conduit.async to conduit-async. The implementation is otherwise the same, so no other code changes should be required.
In return for these breaking changes to the packaging, it is now significantly easier to depend on a particular backend, also for us to rev the interfaces towards a stable 1.0 release. Jbuilder also builds the source tree around 4x faster than it did previously.
There are still some optional dependencies remaining, most notably the tls and ssl packages. If they are present, then conduit will be compiled with TLS support.
set_close_on_exec on Lwt_unix listen sockets (#123)pa_sexp_conv for latest sexp.vchan example code, and use functoria-style mirage for it (#108 via @jonludlam)Ssl_unsupported exception for Async rather than just raising FailureConduit_lwt_tls waits for a user callback to finish before accepting more connections. Instead, it should only wait until the connection is accepted and detach client callback (#97).ssl_accept fails, e.g. when cipher negotiation mismatch (#104).Launchd argument for the Conduit_lwt_unix server listener to support the MacOSX service launcher (#96).Conduit_mirage.With_tcp (#92, by @Drup)Resolver_mirage.Make_with_stack to build a DNS resolver using an existing network stack (#92, by @Drup)Resolver_mirage.S, the signature for Mirage's conduit resolvers than can perform DNS lookups. These resolvers now expose their DNS implmentation as a submodule (#92, by @Drup)Conduit_lwt_unix_ssl.accept (reported by @jrb467 in #88)Conduit_lwt_unix.Serve now passes the client flow to the server callback instead of the listening server one. This lets servers retrieve the peer endpoint correctly (reported by @fxfactorial in #87)Conduit_mirage.Context, a functor for creating HTTP(s) conduit contexts (with a DNS resolver).https:// resolution for Conduit_mirageocaml-tls.0.5.0ocaml-tls.0.5.0Conduit_mirage, and disable it by default so that it is a developer-only option until it is properly released. It can be enabled by setting the HAVE_MIRAGE_LWT env variable.tests/async/Make_flow functor with Dynamic_flow that is easier to extend with more flow types.error_message function to simplify error display (#38).CONDUIT_DEBUG variable is not set.Conduit_lwt_unix.CONDUIT_TLS environment variable to native. If this is not set and OpenSSL is available, then OpenSSL is used by in preference to the pure OCaml implementation.Conduit_lwt_unix.ctx and Conduit_mirage.ctx and the Resolver service types.CONDUIT_DEBUG variable is set on Unix.client and server types in Conduit_lwt_unix now explicitly label the fields of the tuples with a polymorphic variant. This allows them to remain independent of this library but still be more self-descriptive (i.e. Port of int instead of just int).ctx content to track every conduit's runtime state.password callback for the SSL layer (#4).Conduit_mirage with Mirage functor suport.CONDUIT_DEBUG environment variable to the Unix backends for live debugging.conn value to the callback to query more information about the current connection (#2).Conduit_lwt_unix.flow in the external signature. This lets library users obtain the original Lwt_unix.file_descr when using Conduit libraries like Cohttp.