Auto merge of #10672 - frewsxcv:net-network, r=KiChjang

Improvements to network preferences, HTTP redirection limiting.

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10672)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-04-19 04:06:25 +05:30
commit 80662f1e4e
7 changed files with 20 additions and 13 deletions

View file

@ -423,7 +423,7 @@ impl FontCacheThread {
// derived from http://stackoverflow.com/a/10864297/3830
fn is_supported_font_type(toplevel: &TopLevel, sublevel: &SubLevel) -> bool {
if !prefs::get_pref("net.mime.sniff").as_boolean().unwrap_or(false) {
if !prefs::get_pref("network.mime.sniff").as_boolean().unwrap_or(false) {
return true;
}

View file

@ -44,6 +44,7 @@ use time::Tm;
#[cfg(any(target_os = "macos", target_os = "linux"))]
use tinyfiledialogs;
use url::Url;
use util::prefs;
use util::resource_files::resources_dir_path;
use util::thread::spawn_named;
use uuid;
@ -165,7 +166,7 @@ fn load_for_consumer(load_data: LoadData,
Err(LoadError::Connection(url, e)) => {
send_error(url, e, start_chan)
}
Err(LoadError::MaxRedirects(url)) => {
Err(LoadError::MaxRedirects(url, _)) => {
send_error(url, "too many redirects".to_owned(), start_chan)
}
Err(LoadError::Cors(url, msg)) |
@ -335,7 +336,7 @@ pub enum LoadError {
Ssl(Url, String),
InvalidRedirect(Url, String),
Decoding(Url, String),
MaxRedirects(Url),
MaxRedirects(Url, u32), // u32 indicates number of redirects that occurred
ConnectionAborted(String),
Cancelled(Url, String),
}
@ -726,10 +727,7 @@ pub fn load<A, B>(load_data: LoadData,
user_agent: String,
cancel_listener: &CancellationListener)
-> Result<StreamedResponse<A::R>, LoadError> where A: HttpRequest + 'static, B: UIProvider {
// FIXME: At the time of writing this FIXME, servo didn't have any central
// location for configuration. If you're reading this and such a
// repository DOES exist, please update this constant to use it.
let max_redirects = 50;
let max_redirects = prefs::get_pref("network.http.redirection-limit").as_i64().unwrap() as u32;
let mut iters = 0;
// URL of the document being loaded, as seen by all the higher-level code.
let mut doc_url = load_data.url.clone();
@ -761,7 +759,7 @@ pub fn load<A, B>(load_data: LoadData,
}
if iters > max_redirects {
return Err(LoadError::MaxRedirects(doc_url));
return Err(LoadError::MaxRedirects(doc_url, iters - 1));
}
if &*doc_url.scheme != "http" && &*doc_url.scheme != "https" {

View file

@ -77,7 +77,7 @@ pub fn start_sending_sniffed_opt(start_chan: LoadConsumer, mut metadata: Metadat
classifier: Arc<MIMEClassifier>, partial_body: &[u8],
context: LoadContext)
-> Result<ProgressSender, ()> {
if prefs::get_pref("net.mime.sniff").as_boolean().unwrap_or(false) {
if prefs::get_pref("network.mime.sniff").as_boolean().unwrap_or(false) {
// TODO: should be calculated in the resource loader, from pull requeset #4094
let mut no_sniff = NoSniffFlag::OFF;
let mut check_for_apache_bug = ApacheBugFlag::OFF;