diff options
author | Keegan McAllister <kmcallister@mozilla.com> | 2013-09-23 12:13:33 -0700 |
---|---|---|
committer | Keegan McAllister <kmcallister@mozilla.com> | 2013-09-23 14:50:50 -0700 |
commit | 1c6de361b735a80034edb719d997e6c8b6cd8fef (patch) | |
tree | 32d6ee00b1a41571f1bbb15af7786350ed456449 /src/components/script/html/cssparse.rs | |
parent | 9bd0e2a3ac41ee563981f37567b73ca309216568 (diff) | |
download | servo-1c6de361b735a80034edb719d997e6c8b6cd8fef.tar.gz servo-1c6de361b735a80034edb719d997e6c8b6cd8fef.zip |
Handle HTTP 3xx redirects
Fixes #973.
Diffstat (limited to 'src/components/script/html/cssparse.rs')
-rw-r--r-- | src/components/script/html/cssparse.rs | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/components/script/html/cssparse.rs b/src/components/script/html/cssparse.rs index 6d9d0d18a5a..9111f517c12 100644 --- a/src/components/script/html/cssparse.rs +++ b/src/components/script/html/cssparse.rs @@ -10,7 +10,7 @@ use std::comm::Port; use std::task; use newcss::stylesheet::Stylesheet; use newcss::util::DataStream; -use servo_net::resource_task::{ResourceTask, ProgressMsg, Load, Payload, Done}; +use servo_net::resource_task::{ResourceTask, ProgressMsg, Load, Payload, Done, UrlChange}; use extra::url::Url; /// Where a style sheet comes from. @@ -57,10 +57,19 @@ fn data_stream(provenance: StylesheetProvenance, resource_task: ResourceTask) -> fn resource_port_to_data_stream(input_port: Port<ProgressMsg>) -> DataStream { return || { - match input_port.recv() { - Payload(data) => Some(data), - Done(*) => None + // Can't just 'return' the value since we're inside a lambda + let mut result = None; + loop { + match input_port.recv() { + UrlChange(*) => (), // don't care that URL changed + Payload(data) => { + result = Some(data); + break; + } + Done(*) => break + } } + result } } |