From 5234e4a7a90a24582943fee28123c279dd4d7be6 Mon Sep 17 00:00:00 2001 From: Jesse Tuchsen Date: Thu, 27 Nov 2014 13:42:41 -0700 Subject: [PATCH] servo: Merge #4128 - Fixes #3962 (from jtuchsen:issue-3962); r=jdm Bad HTTP responses now have a 0 status code instead of 200 OK. Source-Repo: https://github.com/servo/servo Source-Revision: b56bab4e407b38fa1e58d8be247ecd5f156c89bc --- servo/components/net/about_loader.rs | 2 +- servo/components/net/http_loader.rs | 7 +++++-- servo/components/net/resource_task.rs | 4 ++-- servo/components/script/dom/xmlhttprequest.rs | 9 ++++++--- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/servo/components/net/about_loader.rs b/servo/components/net/about_loader.rs index 4eca1d7819ad..27824d89a1f5 100644 --- a/servo/components/net/about_loader.rs +++ b/servo/components/net/about_loader.rs @@ -19,7 +19,7 @@ pub fn factory(mut load_data: LoadData, start_chan: Sender) { content_type: Some(("text".to_string(), "html".to_string())), charset: Some("utf-8".to_string()), headers: None, - status: StatusOk, + status: Some(StatusOk), }); chan.send(Done(Ok(()))); return diff --git a/servo/components/net/http_loader.rs b/servo/components/net/http_loader.rs index 787375d5306e..50327f3a00c5 100644 --- a/servo/components/net/http_loader.rs +++ b/servo/components/net/http_loader.rs @@ -17,7 +17,10 @@ pub fn factory(load_data: LoadData, start_chan: Sender) { } fn send_error(url: Url, err: String, start_chan: Sender) { - match start_sending_opt(start_chan, Metadata::default(url)) { + let mut metadata = Metadata::default(url); + metadata.status = None; + + match start_sending_opt(start_chan, metadata) { Ok(p) => p.send(Done(Err(err))), _ => {} }; @@ -133,7 +136,7 @@ fn load(load_data: LoadData, start_chan: Sender) { let mut metadata = Metadata::default(url); metadata.set_content_type(&response.headers.content_type); metadata.headers = Some(response.headers.clone()); - metadata.status = response.status.clone(); + metadata.status = Some(response.status.clone()); let progress_chan = match start_sending_opt(start_chan, metadata) { Ok(p) => p, diff --git a/servo/components/net/resource_task.rs b/servo/components/net/resource_task.rs index 802b44afd75e..74d8d1b959d9 100644 --- a/servo/components/net/resource_task.rs +++ b/servo/components/net/resource_task.rs @@ -72,7 +72,7 @@ pub struct Metadata { pub headers: Option, /// HTTP Status - pub status: Status + pub status: Option } impl Metadata { @@ -83,7 +83,7 @@ impl Metadata { content_type: None, charset: None, headers: None, - status: StatusOk // http://fetch.spec.whatwg.org/#concept-response-status-message + status: Some(StatusOk) // http://fetch.spec.whatwg.org/#concept-response-status-message } } diff --git a/servo/components/script/dom/xmlhttprequest.rs b/servo/components/script/dom/xmlhttprequest.rs index c40a11c5593f..7b43541a660c 100644 --- a/servo/components/script/dom/xmlhttprequest.rs +++ b/servo/components/script/dom/xmlhttprequest.rs @@ -88,7 +88,7 @@ pub struct GenerationId(uint); pub enum XHRProgress { /// Notify that headers have been received - HeadersReceivedMsg(GenerationId, Option, Status), + HeadersReceivedMsg(GenerationId, Option, Option), /// Partial progress (after receiving headers), containing portion of the response LoadingMsg(GenerationId, ByteString), /// Loading is done @@ -874,8 +874,11 @@ impl<'a> PrivateXMLHttpRequestHelpers for JSRef<'a, XMLHttpRequest> { // Part of step 13, send() (processing response) // XXXManishearth handle errors, if any (substep 1) // Substep 2 - *self.status_text.borrow_mut() = ByteString::new(status.reason().into_bytes()); - self.status.set(status.code()); + let status_text = status.as_ref().map_or(vec![], |s| s.reason().into_bytes()); + let status_code = status.as_ref().map_or(0, |s| s.code()); + + *self.status_text.borrow_mut() = ByteString::new(status_text); + self.status.set(status_code); match headers { Some(ref h) => { *self.response_headers.borrow_mut() = h.clone();