From d28eefe6833e44db89a27e6afb5f15fc5d667b9b Mon Sep 17 00:00:00 2001 From: nsfisis Date: Mon, 17 Aug 2026 04:27:46 +0900 Subject: fix(no-proxy-pattern): drop empty entries when splitting NO_PROXY The PHP splits with PREG_SPLIT_NO_EMPTY, but the port dropped that flag, so a leading separator in NO_PROXY kept an empty first entry. That made "empty($hostNames) || '*' === $hostNames[0]" false for values such as " *", turning "bypass the proxy for every host" into "use the proxy for every host". Co-Authored-By: Claude Opus 5 (1M context) --- crates/shirabe/src/util/no_proxy_pattern.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'crates') diff --git a/crates/shirabe/src/util/no_proxy_pattern.rs b/crates/shirabe/src/util/no_proxy_pattern.rs index cd54fa1a..4f2809e7 100644 --- a/crates/shirabe/src/util/no_proxy_pattern.rs +++ b/crates/shirabe/src/util/no_proxy_pattern.rs @@ -36,8 +36,10 @@ pub struct IpData { impl NoProxyPattern { /// @param string $pattern NO_PROXY pattern pub fn new(pattern: &str) -> Self { - // PHP: Preg::split('{[\s,]+}', $pattern, -1, PREG_SPLIT_NO_EMPTY) - let host_names = preg_split(php_regex!(r"{[\s,]+}"), pattern); + let host_names: Vec = preg_split(php_regex!(r"{[\s,]+}"), pattern) + .into_iter() + .filter(|host_name| !host_name.is_empty()) + .collect(); let noproxy = host_names.is_empty() || host_names[0] == "*"; Self { host_names, -- cgit v1.3.1-4-g156e