mirror of
https://github.com/servo/servo.git
synced 2025-06-04 07:35:36 +00:00
Improve page load error information
Fixes #8640. This commit adds a neterror page that displays really really basic information about what went wrong with your request, which is an improvement over the current state of blank page. It also fixes the problem of certificate validation errors not triggering the cert error page, since for some reason the function string seems to have turned lowercase.
This commit is contained in:
parent
46db988b90
commit
8e3593aa67
3 changed files with 23 additions and 4 deletions
|
@ -1143,7 +1143,7 @@ fn is_cert_verify_error(error: &OpensslError) -> bool {
|
|||
match error {
|
||||
&OpensslError::UnknownError { ref library, ref function, ref reason } => {
|
||||
library == "SSL routines" &&
|
||||
function == "SSL3_GET_SERVER_CERTIFICATE" &&
|
||||
function.to_uppercase() == "SSL3_GET_SERVER_CERTIFICATE" &&
|
||||
reason == "certificate verify failed"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -171,13 +171,24 @@ impl AsyncResponseListener for ParserContext {
|
|||
Some(parser) => parser.root(),
|
||||
None => return,
|
||||
};
|
||||
parser.r().document().finish_load(LoadType::PageSource(self.url.clone()));
|
||||
|
||||
if let Err(err) = status {
|
||||
debug!("Failed to load page URL {}, error: {:?}", self.url, err);
|
||||
if let Err(NetworkError::Internal(ref reason)) = status {
|
||||
// Show an error page for network errors,
|
||||
// certificate errors are handled earlier.
|
||||
self.is_synthesized_document = true;
|
||||
let parser = parser.r();
|
||||
let page_bytes = read_resource_file("neterror.html").unwrap();
|
||||
let page = String::from_utf8(page_bytes).unwrap();
|
||||
let page = page.replace("${reason}", reason);
|
||||
parser.pending_input().borrow_mut().push(page);
|
||||
parser.parse_sync();
|
||||
} else if let Err(err) = status {
|
||||
// TODO(Savago): we should send a notification to callers #5463.
|
||||
debug!("Failed to load page URL {}, error: {:?}", self.url, err);
|
||||
}
|
||||
|
||||
parser.r().document().finish_load(LoadType::PageSource(self.url.clone()));
|
||||
|
||||
parser.r().last_chunk_received().set(true);
|
||||
if !parser.r().is_suspended() {
|
||||
parser.r().parse_sync();
|
||||
|
|
8
resources/neterror.html
Normal file
8
resources/neterror.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Error loading page</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Could not load the requested page: ${reason}</p>
|
||||
</body>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue