# Changes

## 0.12.0
* Bumped the minimum compiler version tested by CI to 1.56 - this is necessary due to an increasing number of dependencies
  introducing Cargo manifest features only supported on newer versions of Rust.

* [Add support for UNIX sockets](https://github.com/tiny-http/tiny-http/pull/224)

  Thanks to @ColonelThirtyTwo for adding support for binding to UNIX sockets when creating a tiny-http server. This change
  makes a few small breaking API modifications, if you are constructing `ServerConfig` manually you will need to use the new `ListenAddr`
  type rather than directly supplying a `net::SocketAddr`. Likewise `Server::server_addr()` will now return an enum that can
  represent either a TCP socket or a UNIX socket.

  Finally `Request::remote_addr()` now returns an `Option<&SocketAddr>` as UNIX sockets don't ever have a remote host.

* [Reduce required dependencies by switching to `httpdate`](https://github.com/tiny-http/tiny-http/pull/228)

  @esheppa replaced our internal HTTPDate type with the `httpdate` library (used extensively in the community by Hyper, Tokio and others)
  which reduces our baseline dependency tree from 18 crates to 5!

* `TestRequest::path` no longer has a `'static` bound, allowing for fuzzers to generate test request paths at runtime.

* Unpinned `zeroize` so it can float around any stable `^1` version.

## 0.11.0

* [Add support for Rustls](https://github.com/tiny-http/tiny-http/pull/218)

  Thanks to @3xmblzj5 and @travispaul for their help in implementing [`Rustls`](https://github.com/rustls/rustls) as a
  drop-in replacement for OpenSSL, you can now build `tiny-http` with TLS support without any external dependencies!
  OpenSSL will remain the default implementation if you just enable the `ssl` feature, but you are strongly encouraged
  to use `ssl-rustls` where possible!

* [Fix incorrect certificate chain loading](https://github.com/tiny-http/tiny-http/commit/876efd6b752e991c699d27d3d0ad9a47e9d35c29)

  Fix a longstanding bug where we were only loading the first (i.e. the leaf) certificate from any PEM file supplied by
  the user.


## 0.10.0

* [Replace chrono with time-rs](https://github.com/tiny-http/tiny-http/commit/75ac7758fd0ca660c35f58c2a36edb23a42cda32)

  `chrono` was only used to store and format `DateTime` into the slightly odd format required by RFC 7231, so to
  avoid the numerous RUSTSEC advisories generated by the `localtime_r` issue, we can just drop it entirely and switch
  to `time-rs`.
  Unfortunately this means we need to **bump our minimum tested compiler version to 1.51**, and as such this change
  requires a full minor release.

## 0.9.0

* [Rust 2018 Refactor](https://github.com/tiny-http/tiny-http/pull/208)
* [Enable prompt responses, before the request has been fully read](https://github.com/tiny-http/tiny-http/pull/207)

  This isn't an API change, but does result in different behaviour to 0.8.2 and so justifies a minor version bump.

  HTTP requests now return a boxed `FusedReader` which drops the underlying
  reader once it reaches EOF, such that the reader no longer needs to be
  explicitly consumed and the server may now respond with e.g. a "413 Payload
  too large" without waiting for the whole reader.

* Bumped the minimum compiler version tested by CI to 1.48 (the version supported in Debian Bullseye)

## 0.8.2

* [Add TestRequest for writing server tests more easily](https://github.com/tiny-http/tiny-http/pull/203)

## 0.8.1

* [Don't set Transfer-Encoding for 1xx or 204 Responses](https://github.com/tiny-http/tiny-http/pull/198)

## 0.8.0

* [Fix RUSTSEC-2020-0031](https://github.com/tiny-http/tiny-http/pull/190)
* [Filter out the same socket-closing errors on flush as on write](https://github.com/tiny-http/tiny-http/pull/192)
* [response: Drop the use of EqualReader for TransferEncoding::Identity](https://github.com/tiny-http/tiny-http/pull/183)
* [Add unblock method for graceful shutdown](https://github.com/tiny-http/tiny-http/pull/184)
* [Response: Don't forget `chunked_threshold`](https://github.com/tiny-http/tiny-http/pull/177)
* [Response: Allow manual handling of Range requests](https://github.com/tiny-http/tiny-http/pull/175)
* [Feature | Getters for Response Status Code & Data Length Properties](https://github.com/tiny-http/tiny-http/pull/186)

## 0.7.0

* [Fix HTTPS deadlock](https://github.com/tiny-http/tiny-http/pull/151)
* [Relicense to MIT/Apache-2.0](https://github.com/tiny-http/tiny-http/pull/163)
* [Update `ascii` dependency](https://github.com/tiny-http/tiny-http/pull/165)
* [Fix typo in README](https://github.com/tiny-http/tiny-http/pull/171)
* [Fix compilation errors in benchmark](https://github.com/tiny-http/tiny-http/pull/170)
* [Update `url` dependency](https://github.com/tiny-http/tiny-http/pull/168)
* [Update `chunked_transfer` dependency](https://github.com/tiny-http/tiny-http/pull/166)

## 0.6.2

* [Remove AsciiExt usage](https://github.com/tiny-http/tiny-http/pull/152)
* [Remove unused EncodingDecoder](https://github.com/tiny-http/tiny-http/pull/153)

## 0.6.1

* [Fix documentation typo](https://github.com/tiny-http/tiny-http/pull/148)
* [Expose chunked_threshold on Response](https://github.com/tiny-http/tiny-http/pull/150)

## 0.6.0

* [Bump dependencies](https://github.com/tiny-http/tiny-http/pull/142)
* [Fix `next_header_source` alignment](https://github.com/tiny-http/tiny-http/pull/140)

## 0.5.9

* Expanded and changed status code description mapping according to IANA registry:
 * https://github.com/tiny-http/tiny-http/pull/138

## 0.5.8

* Update links to reflect repository ownership change: https://github.com/frewsxcv/tiny-http -> https://github.com/tiny-http/tiny-http

## 0.5.7

* Fix using Transfer-Encoding: identity with no content length
 * https://github.com/tiny-http/tiny-http/pull/126

## 0.5.6

* Update link to documentation
 * https://github.com/tiny-http/tiny-http/pull/123
* Fix websockets
 * https://github.com/tiny-http/tiny-http/pull/124
* Drop the request reader earlier
 * https://github.com/tiny-http/tiny-http/pull/125

## 0.5.5

* Start using the log crate
 * https://github.com/tiny-http/tiny-http/pull/121
* Unblock the accept thread on shutdown
 * https://github.com/tiny-http/tiny-http/pull/120

## 0.5.4

* Fix compilation warnings
 * https://github.com/tiny-http/tiny-http/pull/118

## 0.5.3

* Add try_recv_timeout function to the server
 * https://github.com/tiny-http/tiny-http/pull/116

## 0.5.2

* Update ascii to version 0.7
 * https://github.com/tiny-http/tiny-http/pull/114

## 0.5.1

* Request::respond now returns an IoResult
 * https://github.com/tiny-http/tiny-http/pull/110

## 0.5.0

* HTTPS support
 * https://github.com/tiny-http/tiny-http/pull/107
* Rework the server creation API
 * https://github.com/tiny-http/tiny-http/pull/106

## 0.4.1

* Allow binding to a nic by specifying the socket address
 * https://github.com/tiny-http/tiny-http/pull/103

## 0.4.0

* Make Method into an enum instead of a character string
 * https://github.com/tiny-http/tiny-http/pull/102
