Skip to content
Permalink
Browse files

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.
  • Loading branch information
notriddle committed Oct 13, 2018
1 parent bf192ca commit 3b1bfa3942f4e9c9b3649871ecd1655a1fc77736
Showing with 5 additions and 0 deletions.
  1. +3 −0 components/constellation/network_listener.rs
  2. +2 −0 components/net_traits/response.rs
@@ -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
@@ -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
}

0 comments on commit 3b1bfa3

Please sign in to comment.
You can’t perform that action at this time.