aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/html/cssparse.rs
diff options
context:
space:
mode:
authorKeegan McAllister <kmcallister@mozilla.com>2013-09-23 12:13:33 -0700
committerKeegan McAllister <kmcallister@mozilla.com>2013-09-23 14:50:50 -0700
commit1c6de361b735a80034edb719d997e6c8b6cd8fef (patch)
tree32d6ee00b1a41571f1bbb15af7786350ed456449 /src/components/script/html/cssparse.rs
parent9bd0e2a3ac41ee563981f37567b73ca309216568 (diff)
downloadservo-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.rs17
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
}
}