|  | 
| 2 | 2 | 
 | 
| 3 | 3 | ## pre-v4.0.0 | 
| 4 | 4 | 
 | 
| 5 |  | - * Headers are now properly treated as case-insensitive | 
| 6 |  | - * Original headers that have not had `string:casefold/1` run on each header | 
| 7 |  | - name are still available in the request through `elli_request:original_headers` | 
|  | 5 | +* Headers are now properly treated as case-insensitive | 
|  | 6 | +* Original headers that have not had `string:casefold/1` run on each header | 
|  | 7 | +name are still available in the request through `elli_request:original_headers` | 
| 8 | 8 | 
 | 
| 9 | 9 | ## v3.3.0 | 
| 10 | 10 | 
 | 
| 11 |  | - * Do not use x-forwarded-for for peer #75  | 
| 12 |  | - * Handle arguments with no value in (post|get)_arg_decoded #82 | 
| 13 |  | - * Fix compile-time warnings on missing record info. from aleppo #81 | 
|  | 11 | +* Do not use x-forwarded-for for peer #75 | 
|  | 12 | +* Handle arguments with no value in (post|get)_arg_decoded #82 | 
|  | 13 | +* Fix compile-time warnings on missing record info. from aleppo #81 | 
| 14 | 14 | 
 | 
| 15 | 15 | ## v3.2.0 | 
| 16 | 16 | 
 | 
| 17 |  | - * Quell warnings on OTP-21: https://github.com/elli-lib/elli/pull/61 | 
|  | 17 | +* Quell warnings on OTP-21: <https://github.com/elli-lib/elli/pull/61> | 
| 18 | 18 | 
 | 
| 19 |  | - * Generate HTML docs: https://github.com/elli-lib/elli/pull/58 | 
|  | 19 | +* Generate HTML docs: <https://github.com/elli-lib/elli/pull/58> | 
| 20 | 20 | 
 | 
| 21 |  | - * Add OTP-21 to Travis build matrix: https://github.com/elli-lib/elli/pull/62 | 
|  | 21 | +* Add OTP-21 to Travis build matrix: <https://github.com/elli-lib/elli/pull/62> | 
| 22 | 22 | 
 | 
| 23 |  | - * Remove unnecessary `stacktrace_compat` dependency: https://github.com/elli-lib/elli/pull/63 | 
|  | 23 | +* Remove unnecessary `stacktrace_compat` dependency: <https://github.com/elli-lib/elli/pull/63> | 
| 24 | 24 | 
 | 
| 25 |  | - * Export `elli_request/uri_decode/1` and improve performance: https://github.com/elli-lib/elli/pull/67 | 
|  | 25 | +* Export `elli_request:uri_decode/1` and improve performance: <https://github.com/elli-lib/elli/pull/67> | 
| 26 | 26 | 
 | 
| 27 |  | - * Update Travis config: https://github.com/elli-lib/elli/pull/69 | 
|  | 27 | +* Update Travis config: <https://github.com/elli-lib/elli/pull/69> | 
| 28 | 28 | 
 | 
| 29 |  | - * Drop support for OTP-16: https://github.com/elli-lib/elli/pull/71 | 
|  | 29 | +* Drop support for OTP-16: <https://github.com/elli-lib/elli/pull/71> | 
| 30 | 30 | 
 | 
| 31 |  | - * Prefer `OTP_RELEASE` over `rebar_erl_vsn` plugin: https://github.com/elli-lib/elli/pull/73 | 
|  | 31 | +* Prefer `OTP_RELEASE` over `rebar_erl_vsn` plugin: <https://github.com/elli-lib/elli/pull/73> | 
| 32 | 32 | 
 | 
| 33 |  | - * Remove old `maintainers` metadata: https://github.com/elli-lib/elli/pull/74 | 
|  | 33 | +* Remove old `maintainers` metadata: <https://github.com/elli-lib/elli/pull/74> | 
| 34 | 34 | 
 | 
| 35 | 35 | ## v3.1.0 | 
| 36 | 36 | 
 | 
| 37 |  | - * Update docs: https://github.com/elli-lib/elli/pull/57 | 
|  | 37 | +* Update docs: <https://github.com/elli-lib/elli/pull/57> | 
| 38 | 38 | 
 | 
| 39 |  | - * Logging and stacktrace OTP-21 support: https://github.com/elli-lib/elli/pull/55 | 
|  | 39 | +* Logging and stacktrace OTP-21 support: <https://github.com/elli-lib/elli/pull/55> | 
| 40 | 40 | 
 | 
| 41 |  | - * Include req_body size in sizes list: https://github.com/elli-lib/elli/pull/52 | 
|  | 41 | +* Include req_body size in sizes list: <https://github.com/elli-lib/elli/pull/52> | 
| 42 | 42 | 
 | 
| 43 |  | - * Update CHANGELOG.md for 3.0.0: https://github.com/elli-lib/elli/pull/49 | 
|  | 43 | +* Update CHANGELOG.md for 3.0.0: <https://github.com/elli-lib/elli/pull/49> | 
| 44 | 44 | 
 | 
| 45 | 45 | ## v3.0.0 | 
| 46 | 46 | 
 | 
| 47 |  | - * `scheme`, `host`, and `port` added to the `#req{}` record. Corresponding | 
| 48 |  | -   helper functions added to the `elli_request` module. | 
|  | 47 | +* `scheme`, `host`, and `port` added to the `#req{}` record. Corresponding | 
|  | 48 | + helper functions added to the `elli_request` module. | 
| 49 | 49 | 
 | 
| 50 | 50 | ## v2.1.2 | 
| 51 | 51 | 
 | 
| 52 |  | - * Update dependencies and re-enable linting | 
|  | 52 | +* Update dependencies and re-enable linting | 
| 53 | 53 | 
 | 
| 54 |  | - * Increase test coverage | 
|  | 54 | +* Increase test coverage | 
| 55 | 55 | 
 | 
| 56 |  | - * Declare optional callbacks to elli_handler | 
|  | 56 | +* Declare optional callbacks to elli_handler | 
| 57 | 57 | 
 | 
| 58 |  | - * Add TLS sendfile implementation by James Fish (from Andrew Thompson) | 
|  | 58 | +* Add TLS sendfile implementation by James Fish (from Andrew Thompson) | 
| 59 | 59 | 
 | 
| 60 |  | - * Use hackney instead of httpc in tests, due to httpc bug | 
|  | 60 | +* Use hackney instead of httpc in tests, due to httpc bug | 
| 61 | 61 | 
 | 
| 62 | 62 | ## v2.0.2 | 
| 63 | 63 | 
 | 
| 64 |  | - * Adapt [knutin/elli#108](https://github.com/knutin/elli/pull/108) by Michael Zazaian | 
|  | 64 | +* Adapt [knutin/elli#108](https://github.com/knutin/elli/pull/108) by Michael Zazaian | 
| 65 | 65 | 
 | 
| 66 |  | - * Incomplete request regression fix by Evan Vigil-McClanahan | 
|  | 66 | +* Incomplete request regression fix by Evan Vigil-McClanahan | 
| 67 | 67 | 
 | 
| 68 |  | - * Handle binary URIs on OTP >=20 | 
|  | 68 | +* Handle binary URIs on OTP >=20 | 
| 69 | 69 | 
 | 
| 70 |  | - * Bespoke uri_decode/1 to obviate inets dependency by Christoffer Vikström | 
|  | 70 | +* Bespoke uri_decode/1 to obviate inets dependency by Christoffer Vikström | 
| 71 | 71 | 
 | 
| 72 | 72 | ## v2.0.1 | 
| 73 | 73 | 
 | 
| 74 |  | - * Miscellaneous tooling, test, and type spec tweaks | 
|  | 74 | +* Miscellaneous tooling, test, and type spec tweaks | 
| 75 | 75 | 
 | 
| 76 |  | - * Helper functions to reduce redundancy | 
|  | 76 | +* Helper functions to reduce redundancy | 
| 77 | 77 | 
 | 
| 78 |  | - * Request start timing fix | 
|  | 78 | +* Request start timing fix | 
| 79 | 79 | 
 | 
| 80 | 80 | ## v2.0.0 | 
| 81 | 81 | 
 | 
| 82 |  | - * Code and documentation cleanup | 
|  | 82 | +* Code and documentation cleanup | 
| 83 | 83 | 
 | 
| 84 |  | - * Instrumentation facilities | 
|  | 84 | +* Instrumentation facilities | 
| 85 | 85 | 
 | 
| 86 |  | - * RFC 2616 section 8.2.3 implementation by Martin Karlsson | 
|  | 86 | +* RFC 2616 section 8.2.3 implementation by Martin Karlsson | 
| 87 | 87 | 
 | 
| 88 |  | - * Send 500 and close connection if file operations fail | 
|  | 88 | +* Send 500 and close connection if file operations fail | 
| 89 | 89 | 
 | 
| 90 | 90 | ## v1.0.5 | 
| 91 | 91 | 
 | 
| 92 |  | - * Optimization of SSL accept by Tristan Sloughter | 
|  | 92 | +* Optimization of SSL accept by Tristan Sloughter | 
| 93 | 93 | 
 | 
| 94 |  | - * Dependency cleanup by Adam Lindberg | 
|  | 94 | +* Dependency cleanup by Adam Lindberg | 
| 95 | 95 | 
 | 
| 96 | 96 | ## v1.0.4 | 
| 97 | 97 | 
 | 
| 98 |  | - * OTP 18.0 compatibility, contributed by Florian Odronitz. | 
|  | 98 | +* OTP 18.0 compatibility, contributed by Florian Odronitz. | 
| 99 | 99 | 
 | 
| 100 | 100 | ## v1.0.3 | 
| 101 | 101 | 
 | 
| 102 |  | - * Various internal cleanup fixes from Andreas Stenius (github.com/kaos) | 
|  | 102 | +* Various internal cleanup fixes from Andreas Stenius (github.com/kaos) | 
| 103 | 103 | 
 | 
| 104 | 104 | ## v1.0.2 | 
| 105 | 105 | 
 | 
| 106 |  | - * Added `elli_request:get_args_decoded/1` which returns the list of | 
| 107 |  | -   query args decoded each time it's called. | 
| 108 |  | - | 
|  | 106 | +* Added `elli_request:get_args_decoded/1` which returns the list of | 
|  | 107 | + query args decoded each time it's called. | 
| 109 | 108 | 
 | 
| 110 | 109 | ## v1.0.1 | 
| 111 | 110 | 
 | 
| 112 |  | - * Fix bug in SSL acceptor pool where due to failed handshakes, Elli | 
| 113 |  | -   runs out of acceptors. Thanks to Stefan Grundmann. | 
|  | 111 | +* Fix bug in SSL acceptor pool where due to failed handshakes, Elli | 
|  | 112 | + runs out of acceptors. Thanks to Stefan Grundmann. | 
| 114 | 113 | 
 | 
| 115 |  | - * In case a handler (or middleware) returns a response Elli does not | 
| 116 |  | -   understand, Elli will now respond with a 500 error. Thanks to | 
| 117 |  | -   Johannes Huning. | 
|  | 114 | +* In case a handler (or middleware) returns a response Elli does not | 
|  | 115 | + understand, Elli will now respond with a 500 error. Thanks to | 
|  | 116 | + Johannes Huning. | 
| 118 | 117 | 
 | 
| 119 |  | - * Added `elli_request:get_arg_decoded/2,3` which HTTP URI decodes the | 
| 120 |  | -   value passed in the request. Thanks to Mariano Valles. | 
|  | 118 | +* Added `elli_request:get_arg_decoded/2,3` which HTTP URI decodes the | 
|  | 119 | + value passed in the request. Thanks to Mariano Valles. | 
| 121 | 120 | 
 | 
| 122 | 121 | ## v1.0 | 
| 123 | 122 | 
 | 
| 124 |  | - * SSL using built-in ssl from Erlang/OTP. Thanks to Maas-Maarten Zeeman. | 
|  | 123 | +* SSL using built-in ssl from Erlang/OTP. Thanks to Maas-Maarten Zeeman. | 
| 125 | 124 | 
 | 
| 126 |  | - * "Handover" a socket to user code, making it possible to implement | 
| 127 |  | -   WebSockets(https://github.com/mmzeeman/elli_websocket | 
|  | 125 | +* "Handover" a socket to user code, making it possible to implement | 
|  | 126 | + WebSockets(<https://github.com/mmzeeman/elli_websocket>). | 
| 128 | 127 | 
 | 
| 129 |  | - * Type fixes from Ingo Struck and Andreas Hasselberg. | 
|  | 128 | +* Type fixes from Ingo Struck and Andreas Hasselberg. | 
| 130 | 129 | 
 | 
| 131 | 130 | ## v0.4.1 | 
| 132 | 131 | 
 | 
| 133 |  | - * Fix from Christian Lundgren for browsers that include spaces in the | 
| 134 |  | -   value of the Content-Length header. | 
|  | 132 | +* Fix from Christian Lundgren for browsers that include spaces in the | 
|  | 133 | + value of the Content-Length header. | 
| 135 | 134 | 
 | 
| 136 | 135 | ## v0.4 | 
| 137 | 136 | 
 | 
| 138 |  | - * Added support for sending ranges of a file with sendfile by | 
| 139 |  | -   returning `{Code, Headers, {file, Filename, {Offset, Length}}}`. If | 
| 140 |  | -   no offset and length is specified, the entire file is sent. The | 
| 141 |  | -   user must provide an appropriate "Content-Length" and | 
| 142 |  | -   "Content-Range" header, see the example in | 
| 143 |  | -   `elli_example_callback.erl` | 
| 144 |  | -   (https://github.com/knutin/elli/blob/master/src/elli_example_callback.erl#L99). Thanks | 
| 145 |  | -   Vincent Siliakus (zambal). | 
| 146 |  | - | 
|  | 137 | +* Added support for sending ranges of a file with sendfile by | 
|  | 138 | + returning `{Code, Headers, {file, Filename, {Offset, Length}}}`. If | 
|  | 139 | + no offset and length is specified, the entire file is sent. The | 
|  | 140 | + user must provide an appropriate "Content-Length" and | 
|  | 141 | + "Content-Range" header, see the example in | 
|  | 142 | + `elli_example_callback.erl` | 
|  | 143 | + (<https://github.com/knutin/elli/blob/master/src/elli_example_callback.erl#L99>). | 
|  | 144 | + Thanks Vincent Siliakus (zambal). | 
| 147 | 145 | 
 | 
| 148 | 146 | ## v0.3 | 
| 149 | 147 | 
 | 
| 150 |  | - * Breaking change: Timeouts used in the HTTP protocol are now | 
| 151 |  | -   configurable. To implement this, changing a record and some | 
| 152 |  | -   callbacks was necessary. To upgrade, a restart of Elli is needed. | 
|  | 148 | +* Breaking change: Timeouts used in the HTTP protocol are now | 
|  | 149 | + configurable. To implement this, changing a record and some | 
|  | 150 | + callbacks was necessary. To upgrade, a restart of Elli is needed. | 
| 153 | 151 | 
 | 
| 154 |  | - * Elli now supports pipelining of any type of request. Some proxies | 
| 155 |  | -   or special clients (like ibrowse) will pipeline requests to reduce | 
| 156 |  | -   latency. | 
|  | 152 | +* Elli now supports pipelining of any type of request. Some proxies | 
|  | 153 | + or special clients (like ibrowse) will pipeline requests to reduce | 
|  | 154 | + latency. | 
| 157 | 155 | 
 | 
| 158 |  | - * If there are no more file descriptors, Elli will shut down. This | 
| 159 |  | -   mimics the behaviour found in Yaws. | 
|  | 156 | +* If there are no more file descriptors, Elli will shut down. This | 
|  | 157 | + mimics the behaviour found in Yaws. | 
| 160 | 158 | 
 | 
| 161 |  | - * Chunked transfer responses will now exit the Elli process when the | 
| 162 |  | -   client closes the connection. Sending a synchronous chunk will | 
| 163 |  | -   return `{error, closed}` if client has closed the connection and | 
| 164 |  | -   the `chunk_complete` event is sent to your callback including which | 
| 165 |  | -   end closed the connection. | 
|  | 159 | +* Chunked transfer responses will now exit the Elli process when the | 
|  | 160 | + client closes the connection. Sending a synchronous chunk will | 
|  | 161 | + return `{error, closed}` if client has closed the connection and | 
|  | 162 | + the `chunk_complete` event is sent to your callback including which | 
|  | 163 | + end closed the connection. | 
| 166 | 164 | 
 | 
| 167 | 165 | ## v0.2.0 | 
| 168 | 166 | 
 | 
| 169 |  | - * Breaking change: moved elli_access_log into a separate repository | 
| 170 |  | -   at github.com/wooga/elli_access_log. Thanks martinrehfeld. | 
|  | 167 | +* Breaking change: moved elli_access_log into a separate repository | 
|  | 168 | + at github.com/wooga/elli_access_log. Thanks martinrehfeld. | 
| 171 | 169 | 
 | 
| 172 | 170 | ## v0.1.3 | 
| 173 | 171 | 
 | 
| 174 |  | - * Added elli_test which makes it easy to write unit tests for your | 
| 175 |  | -   callbacks. Thanks anha0825. | 
|  | 172 | +* Added elli_test which makes it easy to write unit tests for your | 
|  | 173 | + callbacks. Thanks anha0825. | 
| 176 | 174 | 
 | 
| 177 |  | - * Added sendfile support. Thanks chrisavl. | 
|  | 175 | +* Added sendfile support. Thanks chrisavl. | 
| 178 | 176 | 
 | 
| 179 | 177 | ## v0.1.2 | 
| 180 | 178 | 
 | 
| 181 |  | - * Added option to specify listen IP address. Thanks hukl. | 
|  | 179 | +* Added option to specify listen IP address. Thanks hukl. | 
| 182 | 180 | 
 | 
| 183 | 181 | ## v0.1.1 | 
| 184 | 182 | 
 | 
| 185 |  | - * Don't look up the peer ip address on every request anymore, do it | 
| 186 |  | -   on demand using elli_request:peer/1. | 
|  | 183 | +* Don't look up the peer ip address on every request anymore, do it | 
|  | 184 | + on demand using elli_request:peer/1. | 
| 187 | 185 | 
 | 
| 188 | 186 | ## v0.1 | 
| 189 | 187 | 
 | 
| 190 |  | - * Initial release. | 
|  | 188 | +* Initial release. | 
0 commit comments