aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2020-05-27 19:22:46 -0400
committerJosh Matthews <josh@joshmatthews.net>2020-06-09 15:03:18 -0400
commitb7a640b5172ebcdea73179c5a33486930ef35e96 (patch)
treeed74da72e5bfa81594fbaaf0aa4a3ffbf3cdf52f
parentcb4e3cb16a43f91566155b25a5fdf26af6de6a92 (diff)
downloadservo-b7a640b5172ebcdea73179c5a33486930ef35e96.tar.gz
servo-b7a640b5172ebcdea73179c5a33486930ef35e96.zip
net: Treat SSL handshake errors differently from other hyper errors.
-rw-r--r--components/net_traits/lib.rs9
-rw-r--r--components/script/dom/servoparser/mod.rs4
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)