diff options
author | Josh Matthews <josh@joshmatthews.net> | 2020-05-27 19:22:46 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2020-06-09 15:03:18 -0400 |
commit | b7a640b5172ebcdea73179c5a33486930ef35e96 (patch) | |
tree | ed74da72e5bfa81594fbaaf0aa4a3ffbf3cdf52f | |
parent | cb4e3cb16a43f91566155b25a5fdf26af6de6a92 (diff) | |
download | servo-b7a640b5172ebcdea73179c5a33486930ef35e96.tar.gz servo-b7a640b5172ebcdea73179c5a33486930ef35e96.zip |
net: Treat SSL handshake errors differently from other hyper errors.
-rw-r--r-- | components/net_traits/lib.rs | 9 | ||||
-rw-r--r-- | components/script/dom/servoparser/mod.rs | 4 |
2 files changed, 9 insertions, 4 deletions
diff --git a/components/net_traits/lib.rs b/components/net_traits/lib.rs index 3222daceff0..f2f88ba4f92 100644 --- a/components/net_traits/lib.rs +++ b/components/net_traits/lib.rs @@ -712,12 +712,17 @@ pub enum NetworkError { Internal(String), LoadCancelled, /// SSL validation error that has to be handled in the HTML parser - SslValidation(ServoUrl, String), + SslValidation(String), } impl NetworkError { pub fn from_hyper_error(error: &HyperError) -> Self { - NetworkError::Internal(error.to_string()) + let s = error.to_string(); + if s.contains("the handshake failed") { + NetworkError::SslValidation(s) + } else { + NetworkError::Internal(s) + } } pub fn from_http_error(error: &HttpError) -> Self { diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs index d1a4a18df18..9ed99e6b812 100644 --- a/components/script/dom/servoparser/mod.rs +++ b/components/script/dom/servoparser/mod.rs @@ -731,9 +731,9 @@ impl FetchResponseListener for ParserContext { FetchMetadata::Unfiltered(m) => m, FetchMetadata::Filtered { unsafe_, .. } => unsafe_, }), - Err(NetworkError::SslValidation(url, reason)) => { + Err(NetworkError::SslValidation(reason)) => { ssl_error = Some(reason); - let mut meta = Metadata::default(url); + let mut meta = Metadata::default(self.url.clone()); let mime: Option<Mime> = "text/html".parse().ok(); meta.set_content_type(mime.as_ref()); Some(meta) |