diff options
-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) |