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:
@@ -24,6 +24,7 @@ use http::request;
|
|||||||
use method::Method;
|
use method::Method;
|
||||||
use self::pool::{Pool, Pooled};
|
use self::pool::{Pool, Pooled};
|
||||||
use uri::{self, Uri};
|
use uri::{self, Uri};
|
||||||
|
use version::HttpVersion;
|
||||||
|
|
||||||
pub use http::response::Response;
|
pub use http::response::Response;
|
||||||
pub use http::request::Request;
|
pub use http::request::Request;
|
||||||
@@ -139,6 +140,15 @@ where C: Connect,
|
|||||||
type Future = FutureResponse;
|
type Future = FutureResponse;
|
||||||
|
|
||||||
fn call(&self, req: Self::Request) -> Self::Future {
|
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 url = req.uri().clone();
|
||||||
let domain = match uri::scheme_and_authority(&url) {
|
let domain = match uri::scheme_and_authority(&url) {
|
||||||
Some(uri) => uri,
|
Some(uri) => uri,
|
||||||
|
|||||||
Reference in New Issue
Block a user