Update to http 0.2 (#432)
This commit is contained in:
		| @@ -44,7 +44,7 @@ futures-util = { version = "0.3", default-features = false, features = [] } | |||||||
| tokio-util = { version = "0.2", features = ["codec"] } | tokio-util = { version = "0.2", features = ["codec"] } | ||||||
| tokio = { version = "0.2", features = ["io-util", "sync"] } | tokio = { version = "0.2", features = ["io-util", "sync"] } | ||||||
| bytes = "0.5.2" | bytes = "0.5.2" | ||||||
| http = { git = "https://github.com/hyperium/http" } #"0.1.8" | http = "0.2" | ||||||
| log = "0.4.1" | log = "0.4.1" | ||||||
| fnv = "1.0.5" | fnv = "1.0.5" | ||||||
| slab = "0.4.0" | slab = "0.4.0" | ||||||
|   | |||||||
| @@ -544,7 +544,7 @@ impl Pseudo { | |||||||
|  |  | ||||||
|         let mut path = parts |         let mut path = parts | ||||||
|             .path_and_query |             .path_and_query | ||||||
|             .map(|v| v.into()) |             .map(|v| Bytes::copy_from_slice(v.as_str().as_bytes())) | ||||||
|             .unwrap_or_else(Bytes::new); |             .unwrap_or_else(Bytes::new); | ||||||
|  |  | ||||||
|         if path.is_empty() && method != Method::OPTIONS { |         if path.is_empty() && method != Method::OPTIONS { | ||||||
| @@ -569,7 +569,9 @@ impl Pseudo { | |||||||
|         // If the URI includes an authority component, add it to the pseudo |         // If the URI includes an authority component, add it to the pseudo | ||||||
|         // headers |         // headers | ||||||
|         if let Some(authority) = parts.authority { |         if let Some(authority) = parts.authority { | ||||||
|             pseudo.set_authority(unsafe { BytesStr::from_utf8_unchecked(authority.into()) }); |             pseudo.set_authority(unsafe { | ||||||
|  |                 BytesStr::from_utf8_unchecked(Bytes::copy_from_slice(authority.as_str().as_bytes())) | ||||||
|  |             }); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         pseudo |         pseudo | ||||||
| @@ -586,7 +588,12 @@ impl Pseudo { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     pub fn set_scheme(&mut self, scheme: uri::Scheme) { |     pub fn set_scheme(&mut self, scheme: uri::Scheme) { | ||||||
|         self.scheme = Some(unsafe { BytesStr::from_utf8_unchecked(scheme.into()) }); |         let bytes = match scheme.as_str() { | ||||||
|  |             "http" => Bytes::from_static(b"http"), | ||||||
|  |             "https" => Bytes::from_static(b"https"), | ||||||
|  |             s => Bytes::copy_from_slice(s.as_bytes()), | ||||||
|  |         }; | ||||||
|  |         self.scheme = Some(unsafe { BytesStr::from_utf8_unchecked(bytes) }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     pub fn set_authority(&mut self, authority: BytesStr) { |     pub fn set_authority(&mut self, authority: BytesStr) { | ||||||
|   | |||||||
| @@ -1375,7 +1375,7 @@ impl proto::Peer for Peer { | |||||||
|         // A request translated from HTTP/1 must not include the :authority |         // A request translated from HTTP/1 must not include the :authority | ||||||
|         // header |         // header | ||||||
|         if let Some(authority) = pseudo.authority { |         if let Some(authority) = pseudo.authority { | ||||||
|             let maybe_authority = uri::Authority::from_shared(authority.clone().into_inner()); |             let maybe_authority = uri::Authority::from_maybe_shared(authority.clone().into_inner()); | ||||||
|             parts.authority = Some(maybe_authority.or_else(|why| { |             parts.authority = Some(maybe_authority.or_else(|why| { | ||||||
|                 malformed!( |                 malformed!( | ||||||
|                     "malformed headers: malformed authority ({:?}): {}", |                     "malformed headers: malformed authority ({:?}): {}", | ||||||
| @@ -1387,7 +1387,7 @@ impl proto::Peer for Peer { | |||||||
|  |  | ||||||
|         // A :scheme is always required. |         // A :scheme is always required. | ||||||
|         if let Some(scheme) = pseudo.scheme { |         if let Some(scheme) = pseudo.scheme { | ||||||
|             let maybe_scheme = uri::Scheme::from_shared(scheme.clone().into_inner()); |             let maybe_scheme = scheme.parse(); | ||||||
|             let scheme = maybe_scheme.or_else(|why| { |             let scheme = maybe_scheme.or_else(|why| { | ||||||
|                 malformed!( |                 malformed!( | ||||||
|                     "malformed headers: malformed scheme ({:?}): {}", |                     "malformed headers: malformed scheme ({:?}): {}", | ||||||
| @@ -1412,7 +1412,7 @@ impl proto::Peer for Peer { | |||||||
|                 malformed!("malformed headers: missing path"); |                 malformed!("malformed headers: missing path"); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             let maybe_path = uri::PathAndQuery::from_shared(path.clone().into_inner()); |             let maybe_path = uri::PathAndQuery::from_maybe_shared(path.clone().into_inner()); | ||||||
|             parts.path_and_query = Some(maybe_path.or_else(|why| { |             parts.path_and_query = Some(maybe_path.or_else(|why| { | ||||||
|                 malformed!("malformed headers: malformed path ({:?}): {}", path, why,) |                 malformed!("malformed headers: malformed path ({:?}): {}", path, why,) | ||||||
|             })?); |             })?); | ||||||
|   | |||||||
| @@ -11,5 +11,5 @@ h2 = { path = "../.." } | |||||||
| env_logger = { version = "0.5.3", default-features = false } | env_logger = { version = "0.5.3", default-features = false } | ||||||
| futures = { version = "0.3", default-features = false } | futures = { version = "0.3", default-features = false } | ||||||
| honggfuzz = "0.5" | honggfuzz = "0.5" | ||||||
| http = { git = "https://github.com/hyperium/http" } #"0.1.3" | http = "0.2" | ||||||
| tokio = { version = "0.2", features = [] } | tokio = { version = "0.2", features = [] } | ||||||
|   | |||||||
| @@ -10,6 +10,6 @@ h2 = { path = "../..", features = ["unstable-stream", "unstable"] } | |||||||
| bytes = "0.5" | bytes = "0.5" | ||||||
| env_logger = "0.5.9" | env_logger = "0.5.9" | ||||||
| futures = { version = "0.3", default-features = false } | futures = { version = "0.3", default-features = false } | ||||||
| http = { git = "https://github.com/hyperium/http" } #"0.1.3" | http = "0.2" | ||||||
| tokio = { version = "0.2", features = ["time"] } | tokio = { version = "0.2", features = ["time"] } | ||||||
| tokio-test = "0.2" | tokio-test = "0.2" | ||||||
|   | |||||||
| @@ -861,7 +861,7 @@ async fn request_options_with_star() { | |||||||
|     let uri = uri::Uri::from_parts({ |     let uri = uri::Uri::from_parts({ | ||||||
|         let mut parts = uri::Parts::default(); |         let mut parts = uri::Parts::default(); | ||||||
|         parts.scheme = Some(uri::Scheme::HTTP); |         parts.scheme = Some(uri::Scheme::HTTP); | ||||||
|         parts.authority = Some(uri::Authority::from_shared("example.com".into()).unwrap()); |         parts.authority = Some(uri::Authority::from_static("example.com")); | ||||||
|         parts.path_and_query = Some(uri::PathAndQuery::from_static("*")); |         parts.path_and_query = Some(uri::PathAndQuery::from_static("*")); | ||||||
|         parts |         parts | ||||||
|     }) |     }) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user