Thread the status through navigation redirects

This is necessary because status codes affect whether the redirect is
done with the same HTTP method or a different one.

This is part of #21886, but there's also a flaw in how iframes are handled
that is causing the redirect to take over the entire window, so this
commit doesn't entirely fix slither.io.
This commit is contained in:
Michael Howell 2018-10-13 00:14:56 +00:00
parent bf192caf4b
commit 3b1bfa3942
2 changed files with 5 additions and 0 deletions

View file

@ -113,6 +113,9 @@ impl NetworkListener {
location_url: metadata.location_url.clone(),
headers: headers.clone().into_inner(),
referrer: metadata.referrer.clone(),
status_code: metadata.status.as_ref()
.map(|&(code, _)| code)
.unwrap_or(200),
});
// XXXManishearth we don't have the cancel_chan anymore and

View file

@ -82,6 +82,7 @@ pub struct ResponseInit {
serialize_with = "::hyper_serde::serialize")]
#[ignore_malloc_size_of = "Defined in hyper"]
pub headers: Headers,
pub status_code: u16,
pub referrer: Option<ServoUrl>,
pub location_url: Option<Result<ServoUrl, String>>,
}
@ -147,6 +148,7 @@ impl Response {
res.location_url = init.location_url;
res.headers = init.headers;
res.referrer = init.referrer;
res.status = Some(StatusCode::from_u16(init.status_code));
res
}