diff --git a/ylong_http_client/src/util/proxy.rs b/ylong_http_client/src/util/proxy.rs index 15ba9c6bcd147500e5bda295c409f17c1ed02bdd..cdc5615df8a4097ea66fd1c156deceb9ced5ddda 100644 --- a/ylong_http_client/src/util/proxy.rs +++ b/ylong_http_client/src/util/proxy.rs @@ -243,16 +243,25 @@ impl NoProxy { fn contains_domain(&self, domain: &str) -> bool { for block_domain in self.domains.iter() { - if block_domain == "*" - || block_domain.ends_with(domain) - || block_domain == domain - || block_domain.trim_matches('.') == domain + let mut block_domain = block_domain.clone(); + // Changes *.example.com to .example.com + if (block_domain.starts_with("*")) && (block_domain.len() > 1) { + block_domain = block_domain.trim_matches('*').to_string(); + } + + if &block_domain == "*" + || (&block_domain).ends_with(domain) + || &block_domain == domain + || (&block_domain).trim_matches('.') == domain { return true; - } else if domain.ends_with(block_domain) { + } else if domain.ends_with(&block_domain) { // .example.com and www. - if block_domain.starts_with('.') - || domain.as_bytes().get(domain.len() - block_domain.len() - 1) == Some(&b'.') + if (&block_domain).starts_with('.') + || domain + .as_bytes() + .get(domain.len() - (&block_domain).len() - 1) + == Some(&b'.') { return true; }