From ec2111edbf758ae25fc5abdc46ca347061092c8c Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Wed, 9 Oct 2013 17:00:56 -0700 Subject: [PATCH] Use rust-http typed headers --- src/components/net/http_loader.rs | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/src/components/net/http_loader.rs b/src/components/net/http_loader.rs index e5669b1f93b..92f5c15a4ee 100644 --- a/src/components/net/http_loader.rs +++ b/src/components/net/http_loader.rs @@ -35,26 +35,22 @@ fn load(url: Url, start_chan: Chan) { } }; - info!("got HTTP response %s, headers:", response.status.to_str()) - - let is_redirect = 3 == (response.status.code() / 100); - let mut redirect: Option = None; - for header in response.headers.iter() { - let name = header.header_name(); - let value = header.header_value(); - info!(" - %s: %s", name, value); - if is_redirect && ("Location" == name) { - redirect = Some(FromStr::from_str(value).expect("Failed to parse redirect URL")); - } - } + // Dump headers, but only do the iteration if info!() is enabled. + info!("got HTTP response %s, headers:", response.status.to_str()); + info!("%?", + for header in response.headers.iter() { + info!(" - %s: %s", header.header_name(), header.header_value()); + }); // FIXME: detect redirect loops - match redirect { - Some(url) => { - info!("redirecting to %s", url.to_str()); - return load(url, start_chan); + if 3 == (response.status.code() / 100) { + match response.headers.location { + Some(url) => { + info!("redirecting to %s", url.to_str()); + return load(url, start_chan); + } + None => () } - None => () } let mut metadata = Metadata::default(url);