Skip to content
This repository
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 149 lines (129 sloc) 8.036 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
0.11.1 (2014-04-17):
* Remove an errant async_ssl reference left in the _oasis file that is
  now handled by the Conduit library (#116).
* Add an Lwt-based SimpleHTTPServer equivalent as `cohttp-server-lwt` (#108).
* `Cohttp.Connection.t` now exposes sexp accessor functions (#117).

0.11.0 (2014-04-01):
* Remove dependency on `ocaml-re` in order to make library POSIX thread-safe.
* Shift most of the connection handling logic out to a Conduit library that
  worries about which SSL library to use, and fails if SSL is not available.
* Add Async-SSL support for both client and server (#102).
* Add Lwt-SSL support for the server side (the client side existed before).
* Fix buggy Async chunked POST handling.

0.10.0 (2014-03-02):
* Interface change: The `Request` and `Response` module types now explictly
  signal `Eof` and `Invalid` (for errors), to help the backend distinguish them.
* Interface change: Unify HTTP body handling across backends into a `Cohttp.Body`
  module. This is extended by Async/Lwt implementations with their specific
  ways of handling bodies (Pipes for Async, or Lwt_stream for Lwt).
* [lwt] Interface change: HTTP client calls now raise Lwt exceptions rather
  than return an option type. This permits better error handling in Lwt.
* [lwt] Interface change: The `Server` callback now always provides a `body`
  argument, since `Cohttp_lwt_body` now explicitly supports empty bodys.
* Add `Cohttp.Header.is_keep_alive` to test if a connection should be reused.
* [lwt] Respect the `keep-alive` header in the server request handling.
* [async] Add a `Body` that takes a `Pipe` or a `string`, similarly to Lwt.
* Install `cohttp-server` binary even if tests are disabled.
* Begin an `examples` directory with some simple uses of the library.

0.9.16 (2014-01-30):
* Add some module type equalities in `Cohttp_lwt_unix` so that
  `Cohttp_lwt_unix.Server.Request.IO.ic` can be equivalen to `Lwt_io.input_channel`.
* Add sexp converters to most Cohttp types (#83).
* Improve Travis tests to cover more upstream users of Cohttp.
* Refactor build flags to let the portable Lwt-core be built independently of Lwt.unix.

0.9.15 (2014-01-11):
* Remove `Cohttp_mirage` libraries, which have now moved to `mirage/mirage-http-*` on GitHub.
* Add an "HTTP only" `Cookie` attribute (#69).
* Fix parsing of cookies with `=` in the values (#71).
* Add `Max-age` support for cookies (#70).
* Make the `Response` record fields mutable to match the `Request` (#67).
* Fix compilation with Async 109.58.00 (#77).
* Make Header handling case-insensitive (by forcing lowercase) (#75).
* Remove the `>>` operator as it was unused and had incorrect precedence (#79).

0.9.14 (2013-12-15):
* Install a `cohttp-server` binary that serves local directory contents via a web server (#54).
* Add a `flush` function to the `IO` module type and implement in Lwt/Async/Mirage.
* Add option `flush` support in the Async and Lwt responders (#52).
* Autogenerate HTTP codes from @citricsquid's JSON representation of the HTTP RFCs.
* Always set `TCP_NODELAY` for Lwt/Unix server sockets for low-latency responses (#58).
* Added a Server-Side Events test-case from the HTML5 Doctor. See `lib_test/README.md`.
* Async.Server response now takes an optional `body` rather than a mandatory `body option` (#62).
* Regenerate build system using OASIS 0.4.0.

0.9.13 (2013-12-10):
* The `cohttp.lwt-core` is now installed as an OS-independent Lwt library.
* Add support for Mirage 1.0, via `cohttp.mirage-unix` and `cohttp.mirage-xen`.
* Add a new `Cohttp.Connection` module to manage server's connections identifiers.
* Share the same configuration type for the different server implementations.
* Add `Accept_types` module to the `Cohttp` pack.

0.9.12 (2013-11-28):
* Improve documentation for `Cohttp.Header`.
* Expose Fieldslib setters and getters for most of the `Cohttp` types (#38).
* `Cohttp.Set_cookie.t` is no longer an abstract type to make it easier to update (#38).
* [Lwt] ignore SIGPIPE unconditionally if using the Lwt/Unix module (#37).
* Rename `Cookie` creation parameters for consistency (interface breaking, see #44).
* Fix transfer-length detection (regression from 0.9.11 in #42).
* Add Merin editor file (#41).

0.9.11 (2013-10-27):
* Request module: When sending a request, add the port information in the host header field if available.
* Request module: When parsing a request, add scheme, host and port information in the uri.
* TCP server: When creating the socket for the server, do not force PF_INET6 but take the sockaddr value.
* Add HTTP OPTIONS method.
* Use getaddrinfo instead of gethostbyname for DNS resolution.
* Async: improve HTTP/1.0 support (#35).
* Build with debug symbols, binary annotations by default.
* Add Travis CI test scripts.

0.9.10 (2013-06-21):
* Add `set-cookie` header extraction functions for clients that read cookies.
* Explicitly flush the debug output when the `COHTTP_DEBUG` env variable is set.
* [async] Add client head/post/patch/delete methods.
* [lwt] Client.head no longer returns a response body, just the metadata.
* [lwt] Do not send chunked encoding headers with GET/DELETE requests that have no body.

0.9.9 (2013-06-12):
* Disable the mirage executable test as it was building too aggressively and breaking builds.

0.9.8 (2013-05-24):
* Lwt interface change: Rewrite Lwt backends to share code, and remove duplicate function calls from Uri.
* Depend on `Uri` 1.3.8+ as it exposes the parameter query functions now removed from `Request`.
* Do not depend on Cstruct in core library, as only Mirage needs it.
* Remove `Cohttp_async.body` type alias and just use `string Pipe.Reader.t` for more explicit types.

0.9.7 (2013-05-10):
* Attach a GC finaliser to the Lwt client to ensure that even an HTTP body isnt consumed, the socket will eventually be closed (#11).
* Add an Async.Server interface, and revise the Client interface to be more in line with Core standards.
* Add 422 Unprocessable Entity code.
* Refactor modules better across Lwt/Async, but incompatible with earlier releases for Async (Lwt is unchanged at present).
* Add user agent string and User-Agent header helper function
* The git history of this release is full of adventures in parameterised monads and refactoring, but this isn't in the actual release. Yet.

0.9.6 (2013-03-18):
* Depend on Async (>= 109.12.00), which has an incompatible API with earlier versions.
* Rearrange core library files for `obuild` support.

0.9.5 (2012-12-29):
* Fix cookie parsing to retrieve the correct header.
* Update to `mirage-net` 0.5.0 API (based on cstruct 0.6.0).

0.9.4 (2012-12-19):
* Add Lwt `respond_redirect` and `respond_need_auth` helpers.
* Add enough Basic authorization support to serve a password-protected website.
* Fix Lwt file serving to not throw exception on trying to serve a directory.
* Port Async interface to 108.07.00 or higher (incompatible
  with earlier versions).

0.9.3 (2012-10-27):
* Add basic cookie support back to the portable library.
* `Cohttp_lwt.Client.post_form` now uses non-chunked encoding for
  the POST instead of chunked.
* Various improvements and tests for the pipelined Lwt Client.callv
* If an Lwt callback does not consume a body, ensure it has
  been drained by the API to prevent future pipelines from stalls.
* Fix handling of Lwt server non-empty POST bodies.
* Map the `put` functions to HTTP PUT instead of POST.

0.9.2 (2012-09-20):
* Add Request.get_param to extract a singleton key from queries.
* Fix chunked encoding handling when short reads occur.
* Install HTML documentation for all enabled drivers.
* Use ocaml-uri-1.3.2 interface for query parsing.
* Lwt: Add Server.respond_file and resolve_file for the Unix
  library to make it easier to serve static files.
* Lwt: Server.respond_not_found takes an optional Uri.t now.

0.9.1 (2012-09-11):
* Functorise for Async, Lwt_unix and Mirage.
* Use URI and Re libraries to not need Str any more.
* More robust parsing for various HTTP headers.

0.9.0 (2012-08-01):
* Initial public release.
Something went wrong with that request. Please try again.