fix(client): return Version errors if unsupported

If a `Request`'s version is `Http09`, `H2`, or `H2c`, `client.request`
will return a `hyper::Error::Version`, and a message is logged at
`error!` level.

Closes #1283
This commit is contained in:
Sean McArthur
2017-09-16 17:20:31 -07:00
parent 0a23420c15
commit 41c47241cd

View File

@@ -24,6 +24,7 @@ use http::request;
use method::Method;
use self::pool::{Pool, Pooled};
use uri::{self, Uri};
use version::HttpVersion;
pub use http::response::Response;
pub use http::request::Request;
@@ -139,6 +140,15 @@ where C: Connect,
type Future = FutureResponse;
fn call(&self, req: Self::Request) -> Self::Future {
match req.version() {
HttpVersion::Http10 |
HttpVersion::Http11 => (),
other => {
error!("Request has unsupported version \"{}\"", other);
return FutureResponse(Box::new(future::err(::Error::Version)));
}
}
let url = req.uri().clone();
let domain = match uri::scheme_and_authority(&url) {
Some(uri) => uri,