Right now, you get an error trying to `cargo install agate`:
error[E0277]: the trait bound `TlsAcceptor: From<Arc<ServerConfig>>` is not satisfied
--> src/main.rs:91:8
|
91 | Ok(TlsAcceptor::from(Arc::new(config)))
| ^^^^^^^^^^^^^^^^^ the trait `From<Arc<ServerConfig>>` is not implemented for `TlsAcceptor`
|
= help: the following implementations were found:
<TlsAcceptor as From<Arc<rustls::server::ServerConfig>>>
<TlsAcceptor as From<rustls::server::ServerConfig>>
= note: required by `from`
This stems a recent point upgrade of async-tls. The newest version
(0.10.2) now depends on rustls 0.19. The previous version in agate's
lock file (0.10.0) depended on rustls 0.18. Agate itself also depended
on rustls 0.18.
The default behavior of `cargo install` is to ignore the lock file and
run a `cargo update` before building and installing. That causes agate
and async-tls to compile against different versions of rustls, causing
the compiler error above.
Arguably, async-tls's recent release should have been a breaking
release, to 0.11, but since that ship has sailed, we can bump agate's
requirements to the latest published versions. Everything seems to
build correctly, and the server still seems to work fine.
If the host does not match, the status code 53 should be used. But I am not sure how
to implement this best as the parse_request function only returns a String as error.