Fetching contributors…
Cannot retrieve contributors at this time
103 lines (64 sloc) 2.9 KB



  • Optimization of SSL accept by Tristan Sloughter

  • Dependency cleanup by Adam Lindberg


  • OTP 18.0 compatibility, contributed by Florian Odronitz.


  • Various internal cleanup fixes from Andreas Stenius (


  • Added elli_request:get_args_decoded/1 which returns the list of query args decoded each time it's called.


  • Fix bug in SSL acceptor pool where due to failed handshakes, Elli runs out of acceptors. Thanks to Stefan Grundmann.

  • In case a handler (or middleware) returns a response Elli does not understand, Elli will now respond with a 500 error. Thanks to Johannes Huning.

  • Added elli_request:get_arg_decoded/2,3 which HTTP URI decodes the value passed in the request. Thanks to Mariano Valles.


  • SSL using built-in ssl from Erlang/OTP. Thanks to Maas-Maarten Zeeman.

  • "Handover" a socket to user code, making it possible to implement WebSockets(

  • Type fixes from Ingo Struck and Andreas Hasselberg.


  • Fix from Christian Lundgren for browsers that include spaces in the value of the Content-Length header.


  • Added support for sending ranges of a file with sendfile by returning {Code, Headers, {file, Filename, {Offset, Length}}}. If no offset and length is specified, the entire file is sent. The user must provide an appropriate "Content-Length" and "Content-Range" header, see the example in elli_example_callback.erl ( Thanks Vincent Siliakus (zambal).


  • Breaking change: Timeouts used in the HTTP protocol are now configurable. To implement this, changing a record and some callbacks was necessary. To upgrade, a restart of Elli is needed.

  • Elli now supports pipelining of any type of request. Some proxies or special clients (like ibrowse) will pipeline requests to reduce latency.

  • If there are no more file descriptors, Elli will shut down. This mimics the behaviour found in Yaws.

  • Chunked transfer responses will now exit the Elli process when the client closes the connection. Sending a synchronous chunk will return {error, closed} if client has closed the connection and the chunk_complete event is sent to your callback including which end closed the connection.


  • Breaking change: moved elli_access_log into a separate repository at Thanks martinrehfeld.


  • Added elli_test which makes it easy to write unit tests for your callbacks. Thanks anha0825.

  • Added sendfile support. Thanks chrisavl.


  • Added option to specify listen IP address. Thanks hukl.


  • Don't look up the peer ip address on every request anymore, do it on demand using elli_request:peer/1.


  • Initial release.